尝试用binlog还原mysql数据库数据
问题:无mysql数据库完整备份,但binlog齐全。想还原到指定时间的数据状态。
尝试:
- 先用mysqldump备份当前的数据,和将binlog文件复制到另外的路径
- 用mysqlbinlog查看各binlog的内容,估计出数据库是在什么时候创建的,存在哪(几)个binlog文件
从binlog中导出指定数据库到指定时间的所有查询,如
mysqlbinlog --database=anqun --stop-datetime="2021-01-15 14:52:00" mysql-bin.000001 > anqun.sql mysqlbinlog --database=anqun --stop-datetime="2021-01-15 14:52:00" mysql-bin.000002 >> anqun.sql ...
- 然后在测试机里,将anqun.sql导入到mysql数据库里,验证数据。如果导入时提示
Duplicate entry '' for key 'PRIMARY'
之类的错误sql语句,可以用mysql带-f的参数跳过(忽略)
参考:
- https://stackoverflow.com/questions/60838362/duplicate-entry-14016-for-key-primary-when-trying-to-restore-binlog-on-mysql
- https://dev.mysql.com/doc/mysql-backup-excerpt/5.6/en/backup-policy.html
- https://learnku.com/articles/20702
- https://www.cnblogs.com/michael9/p/11923483.html
- https://my.oschina.net/chinahub/blog/505116