生产环境中在mysql中误操作是非常正常的,所以就需要用到mysql的增量备份恢复。
增量备份是我们经常用到的,它可以指定某个误操作的时间以及位置点进行数据恢复,更加准确的恢复我们想要还原的数据。
以下实验为大家演示误操作使用增量备份进行数据的恢复。

1、配置文件中开启二进制日志,并重启mysql

mysql增量备份断点恢复_第1张图片
mysql增量备份断点恢复_第2张图片

2、创建测试数据库,写入内容

mysql增量备份断点恢复_第3张图片

3、查看二进制日志,截断日志,完成完全备份

mysqlbinlog --no-defaults --base64-output=decode-rows -v mysql_bin.000001      //查看二进制日志

mysql增量备份断点恢复_第4张图片
mysql增量备份断点恢复_第5张图片


mysqladmin -uroot -pabc123 flush-logs     //刷新截断,形成一个新日志
mysqldump -uroot -pabc123 school > /opt/school.sql   //完全备份school数据库

mysql增量备份断点恢复_第6张图片

4、查看新生成的二进制文件

mysql增量备份断点恢复_第7张图片

5、添加两条数据,再次查看新生成的二进制文件

mysql增量备份断点恢复_第8张图片

mysqlbinlog --no-defaults --base64-output=decode-rows -v mysql-bin.000002   //再次查看新生成的二进制文件

mysql增量备份断点恢复_第9张图片
mysql增量备份断点恢复_第10张图片

6、模拟误操作、查看二进制文件中误操作的位置点时间点

mysql增量备份断点恢复_第11张图片
mysql增量备份断点恢复_第12张图片
mysql增量备份断点恢复_第13张图片

7、删除list表,先进行完全备份恢复

mysql增量备份断点恢复_第14张图片

source /opt/school.sql   //进行完全备份恢复

mysql增量备份断点恢复_第15张图片

再次查看表,完全备份的数据已恢复

mysql增量备份断点恢复_第16张图片

8、再次截断日志,然后进行增量备份恢复

mysqladmin -uroot -pabc123 flush-logs     再次截断日志
(此处截断日志,是为了恢复正确数据的时候不会被前面的操作覆盖)

mysql增量备份断点恢复_第17张图片

恢复到误操作前时间点前的操作
mysqlbinlog --no-defaults --stop-datetime='2018-09-03 22:18:29' /usr/local/mysql/data/mysql_bin.000002 | mysql -uroot -pabc123    

mysql增量备份断点恢复_第18张图片

恢复添加jerry的那部分数据
mysqlbinlog --no-defaults --start-datetime='2018-09-03 22:19:27' /usr/local/mysql/data/mysql_bin.000002 | mysql -uroot -pabc123

可以查看到五条数据都已被恢复

mysql增量备份断点恢复_第19张图片