目录
1、MySql数据库完全备份
- 完全备份保存的是备份完成时刻的数据库;
- 完全备份是增强备份的基础
- 完全备份有两种实现方式
1.1 使用tar打包文件夹备份
[root@localhost opt]# yum install -y xz #下载压缩工具
[root@localhost opt]# tar jcvf /opt/mysql-$(date +%F).tar.xz /usr/local/mysql/data/ #压缩备份
[root@localhost opt]# ls
mysql-2018-08-30.tar.xz rh
解压恢复
tar Jxvf /opt/mysql-2018-08-30.tar.xz -C /usr/local/mysql/data
systemctl restart mysql
1.2 使用mysqldump工具进行完全备份
查看所有库
准备用test库做模拟,转到test库,查看所有表,建了一个学生表stu,员工表emp
1.2.1 完全备份指定库中的部分表
(如stu表)test库中的表备份到opt目录下
mysqldump -u root -p123 test stu > /opt/test_stu.sql
查看备份文件
grep -v "^--" /opt/test_stu.sql | grep -v "^/" | grep -v "^$"
恢复数据表
(1)先删除stu表
mysql -uroot -p123 -e 'drop table test.stu;'
然后查看test库所有表
mysql -uroot -p123 -e 'show tables from test;'
(2)使用备份文件恢复stu表
mysql -uroot -p123 test < /opt/test_stu.sql
然后查看test库中所有表,可以看道stu表已经被恢复了
查看表中数据,可以看到和之前一样没有消失
1.2.2 完全备份一个或多个完整的库(包括其中所有的表)
这里备份test库,把test库备份到opt目录下
mysqldump -uroot -p123 --databases test > /opt/test.sql
恢复数据库
(1)先删除test库
mysql -u root -p -e 'drop database test;',
然后查看所有数据库可以看到已经没有test库啦
mysql -u root -p -e 'show databases;'
(2) 先用备份文件恢复test库
mysql -u root -p < /opt/test.sql,
然后查看所有库,发现test 库已)经恢复了
mysql -u root -p -e 'show databases;'
1.2.3 完全备份MySQL服务器中所有的库
(1)把所有库备份到opt目录下
mysqldump -u root -p123 --all-databases > /opt/all_database.sql
后面的操作和上面一样,先删除所有库,再用备份文件恢复,这里就不演示了
2、MySql数据库增量备份
增量备份就是备份自上一次备份之后记录对数据库操作的文件或者内容,必须先有完全备份才能进行增量备份。
(1)增量备份的特点:
没有重复数据,备份量不大,时间短;
恢复麻烦,需要上次完全备份及完全备份之后所有的增量备份才能恢复,而且要对所有增量备份进行逐个反推恢复。
增量备份依赖二进制日志文件,首先需要开启二进制日志文件:
修改 my.cnf文件,添加:log-bin=mysql-bin
查看日志
ls -l /var/lib/mysql/mysql-bin.*
刷新日志:
mysqladmin -u root -p123 flush-logs
可以看到新生成一个二进制备份文件
往stu表插入新数据,以模拟数据的增加或变更
刷新日志:
mysqladmin -u root -p123 flush-logs
可以看到新生成一个二进制备份文件
模拟丢失更改的数据的恢复步骤
用备份文件mysql-bin.000031恢复数据
mysqlbinlog --no-defaults /var/lib/mysql/mysql-bin.000031 | mysql -u root -p
然后查看etu表可以看到stu表中的数据已经恢复了
mysql -u root -p123 -e "select * from test.stu;"
这是一次数据库作业整理而成,希望能帮助到需要的人。