Mysql binlog 日志恢复数据
2017-10-14 18:32 浏览(2236

在编写本博客的时候,因为是家里和公司都在写。前几天在家里覆盖了的在公司备份的数据库,结果发现,本地数据库的有些数据是公司备份的数据库里面没有的。关键是,因为是本地的linux虚拟机,所以没有备份。但是mysql开启了二进制日志。

只有蛋疼的用binlog恢复吧。想起了两年多前,在公司通宵用binlog恢复数据的苦逼日志。


首先,找到我要恢复的binlog文件。

时间跨度有点长,哈哈

我先找到我要恢复的那张数据表的创建时间。通过 mysqlbinlog 将binlog文件转成txt

./mysqlbinlog mysql-bin.000018 > 18.txt

查看 18.txt ,找到创建 t_source 表的位置点 4920627

./mysqlbinlog --start-position="4920507" mysql-bin.000018 | mysql -u root -p

回车输入正确的密码,开始执行

若有报错,会提示是在哪一行,自己查看就好了。一般的错误都是表已存在,id已存在,或者表不存在之类的

然后依次执行 19,20,21,....日志文件,可以一次指定多个日志文件哦

./mysqlbinlog mysql-bin.000019 mysql-bin.000020 mysql-bin.000021 | mysql -u root -p

最后查看 mysql-bin.000028 文件的结束点,也就是我执行导入覆盖的记录点,防止再次执行覆盖

./mysqlbinlog --stop-position="2270134" mysql-bin.000028 | mysql -u root -p


OK,大功告成,所有的记录都回来了。

然后我又做好了自动备份bash文件。

同志们,一定记得要备份啊~~~,binlog恢复还是有点麻烦的

评论(1)
发布评论
回复X
聊天室(0