生产环境中在mysql中误操作是非常正常的,所以就需要用到mysql的增量备份恢复。
增量备份是我们经常用到的,它可以指定某个误操作的时间以及位置点进行数据恢复,更加准确的恢复我们想要还原的数据。
以下实验为大家演示误操作使用增量备份进行数据的恢复。
1、配置文件中开启二进制日志,并重启mysql
2、创建测试数据库,写入内容
3、查看二进制日志,截断日志,完成完全备份
mysqlbinlog --no-defaults --base64-output=decode-rows -v mysql_bin.000001 //查看二进制日志
mysqladmin -uroot -pabc123 flush-logs //刷新截断,形成一个新日志
mysqldump -uroot -pabc123 school > /opt/school.sql //完全备份school数据库
4、查看新生成的二进制文件
5、添加两条数据,再次查看新生成的二进制文件
mysqlbinlog --no-defaults --base64-output=decode-rows -v mysql-bin.000002 //再次查看新生成的二进制文件
6、模拟误操作、查看二进制文件中误操作的位置点时间点
7、删除list表,先进行完全备份恢复
source /opt/school.sql //进行完全备份恢复
再次查看表,完全备份的数据已恢复
8、再次截断日志,然后进行增量备份恢复
mysqladmin -uroot -pabc123 flush-logs 再次截断日志
(此处截断日志,是为了恢复正确数据的时候不会被前面的操作覆盖)
恢复到误操作前时间点前的操作
mysqlbinlog --no-defaults --stop-datetime='2018-09-03 22:18:29' /usr/local/mysql/data/mysql_bin.000002 | mysql -uroot -pabc123
恢复添加jerry的那部分数据
mysqlbinlog --no-defaults --start-datetime='2018-09-03 22:19:27' /usr/local/mysql/data/mysql_bin.000002 | mysql -uroot -pabc123
可以查看到五条数据都已被恢复