恢复误删除的表
案例说明:
每天2:30做完全备份,早上10:00误删除表students,10:10才发现故障,现需要将数据库还原到10:10的状态,且恢复被删除的students表。
第一步:通过完全备份提供的二进制日志的结束点,开始转储二进制日志文件(其中包含了2:30以后到10:10分的用户操作)。
mysqlbinlog --start-position=156 /data/binary_logs/mysql-bin.000002 >/data/binary_logs/inc.sql
第二步:转储出来的二进制日志文件 inc.sql 如果内容很大不要用vim打开会卡顿,先通过 grep 搜索出删表的操作然后使用sed删除这一条记录。
grep 'DROP' ./binary_logs/inc.sql
sed -ri.bak 'DROP TABLE `students`' ./binary_logs/inc.sql
第三步,关闭二进制日志功能后再进行还原,否则二进制日志会记载还原的操作。
set sql_log_bin=off;
第四步:因为其本质是修改了通过二进制日志转储的增量备份文件,因此要先还原 完全备份 然后才到增量备份
source /data/binary_logs/inc.sql;
结果:可以看到students表已经恢复并且删除students表后用户对teachers表的操作也恢复了过来。
最后一步:将还原前关闭的二进制日志功能开启,莫忘!!!
set sql_log_bin=on;
总结:二进制日志文件严禁与数据库文件放再同一目录,否则崩则一起崩
posted on 2021-06-19 01:02 1251618589 阅读(4) 评论(0) 编辑 收藏 举报