通过二进制日志文件恢复数据:
1. 新建表test.aaa,
向表中插入两条数据:结果显示如下:
2. 查看当前mysql数据库的二进制日志文件:
最新的文件名为“binlog.000016”,最近的操作(向aaa表的插入动作)记录在此日志文件中;
可以确认一下“向表aaa插入数据”动作内容是否记录在此文件中:
3. 用mysqlbinlog显示记录的二进制文件,直接看这个文件将是乱码。
将内容导入到文本文件,方便查看内容,为了后面的恢复。
4. 查看文本文件的内容:
发现“插入操作”在当前日志文件。数据记录结束位子:346;
5. 模拟数据误删除:清空表test.aaa;
Select * from aaa; 查看表数据情况:
查看结果:表已经清空。
6. 使用mysqlbinlog工具恢复数据,到指定结束位置:
相关参数还有--start-position,记录开始的点。
同时也可以通过操作的时间点来恢复,相关参数有--statr-datetime 和--stop-datetime。
7. 恢复操作完成之后,再次连接数据库,
查看表数据:
结果如图,数据已经恢复到指定位置。
Ø 如果只是想忽略掉整个过程中某一个操作,恢复时忽略掉对应哪个语句即可,
做法如图,
你可以选择使用参数--start-position和--stop-position恢复两次 :
一定要确认好要恢复的位置。
Ø mysql_log# mysqlbinloglogbin_ouyang.000009 --stop-position=10625|mysql –u root -p root;
Ø mysql_log# mysqlbinloglogbin_ouyang.000009 --start-position=10843|mysql -u root –p root;
如果发生 Couldnot read entry at offset 1478: Error in log format or read error. 类似的错误! 请检查你的编号是否正确!