数据库备份的重要性,在生产环境中,数据的安全性是至关重要的,任何数据的丢失都可能产生严重的后果,数据库备份,能及时的恢复重要数据。
造成数据丢失的原因:
- 程序错误
- 人为错误
- 计算机失败
- 磁盘失败
- 灾难(火灾、地震)偷窃、
从物理与逻辑的角度,备份可分为物理备份和逻辑备份。
- 逻辑备份:指对数据库逻辑组件(如表、数据库)的备份。
- 物理备份:对数据库操作系统的物理文件(数据文件、日志文件)的备份。物理备份又可以分为冷备份和热备份。
冷备份:在关闭数据库时进行的备份操作,能较好的保证数据库的完整性。
热备份:数据库运行状态时的备份,备份方法依赖于数据库的日志文件。
备份又可分为完全备份、差异备份和增量备份。
- 完整备份:对整个数据库所有对象进行备份,花费时间长。
- 差异备份:完全备份和增量备份之后的备份。(只识别完整备份,备份之后的)
- 增量备份:只针对备份后面修改的内容进行备份。(只备份完整备份之后增加的那一条。)
一.使用tar打包文件夹备份。
1.数据库文件很大,可以使用压缩率较大的XZ格式压缩,优先安装XZ压缩工具
yum install xz -y
2.对数据库文件夹/usr/local/mysql/data/进行打包操作
tar Jcvf /opt/mysql-$(date +%F).tar.xz /usr/local/mysql/data
3.如果数据库文件损坏丢失,可以解压压缩备份文件,做数据恢复工作。
tar Jxvf /opt/mysql-2018-8-30.tar.xz /usr/local/mysql/data
二、使用mysqldump工具备份。
1.对单个库进行完整备份。
mysqldump -u 用户名 -p[密码] --database[数据库] > /备份路径/备份文件名
例:
mysqldump -uroot -pabc123 --database school > /opt/school.sql
2.对某些表进行完全备份。
mysqldump -u用户名 -p[密码][数据库名][表名]>/备份路径/备份文件名
3.对多个库进行完全备份。
mysqldump -u用户名 -p[密码] --databases [库名1][库名2] >/备份路径/备份文件名
4.对所有库进行完全备份。
mysqldump -u用户名 -p[密码] --all-databases >/备份路径/备份文件名
5.只备份某个表的表结构。
mysqldump -u用户名 -p[密码] -d [库名][表名]>/备份路径/备份文件名
三、恢复数据库
1.登陆数据库后,进入数据库用source命令直接进行整库恢复。
source 备份脚本路径
例:
source /opt/school.sql
注意:创建新的数据库,进入新数据库中执行source命令 。
2.用mysql命令恢复。(不登录数据库的情况下)
mysql -u用户名 -p[密码] 库名 < /库备份路径/备份文件
有2个例子说一下,第一种只备份了表,需要提前创建新库,再恢复,第二种无需提前创建新库。
例:
1)第一种
先备份
mysqldump -uroot -pabc123 school>/opt/school.sql
创建新库,查看新库的信息。
mysql -uroot -pabc123 -e 'create database school;show databases;'
恢复
mysql -uroot -pabc123 school < /opt/school.sql
2)第二种
备份
mysqldump -uroot -pabc123 --databases school > school.sql
无需提前创建新库
恢复
mysql -uroot -pabc123 school < school.sql
三、无需登录数据库进行查看、创建数据库、表
mysql -u 用户名 -p[密码] -e '[命令];[命令];'
例:创建一个库查看进入库
mysql -uroot -pabc123 -e 'create database school;show databases;'