大妖怪版MySQL从删库到跑路【续】

  • • 发表于 8年前
  • • 作者 大妖怪
  • • 2519 人浏览
  • • 6 条评论
  • • 最后编辑时间 8年前
  • • 来自 [技 术]

原创声明:本文为作者原创,未经允许不得转载,经授权转载需注明作者和出处

上回讲到通过当天的binlog用各种方法都只能找回三条,原因是太心急了百度的东西只知其一不知其二,后来静下心来仔细研究了一番binlog,总算搞清楚咋回事了。

首先,我理解错了binlog的意思,并不是拿着最后的binlog就可以按时间恢复所有的东西,binlog是MySQL的操作记录,它里面储存了MySQL下所有的crud,因此,要恢复哪些天丢失的数据就要把这些天的东西全部找出来像这样,按照binlog的创建时间从服务器上拿

然后,我们把它放到一起,还是用mysqlbinlog命令,多个文件可以用空格隔开

mysqlbinlog binlog1文件路径 binlog2文件路径 ...

然后就可以在控制台看到这些天所有的操作记录了。
然后,就可以通过恢复命令从多个binlog文件内恢复数据了

mysqlbinlog --stop-date="时间" binlog1文件路径 binlog2文件路径 ...| mysql -u root -p

额,当然,这个过程并不顺利,运行之后就报了个错,没有图了,反正查了半天发现是因为表结构更改造成的(这个坑把自己埋得惨啊)

既然自动恢复的路被堵死了,那就只能手动恢复了,记得之前讲到这样一条转成SQL语句的命令:

mysqlbinlog --start-date="开始时间" --stop-date="结束时间" binlog文件路径 > /sql文件路径.sql

改成这样

mysqlbinlog binlog1文件路径 binlog2文件路径... > /要生成的sql文件路径.sql

这样就可以将这么多天的文件全部都生成在了一个文件里;
文件打开我又要疯了

总共有一百一十多万行这么多,我要在里面寻找、搜索我需要的crud,然后找到了之后放到另一个文件,找完了把表结构更改的在手动修改一下,最后运行这些语句,然后核对数据(此过程总共用了三天三夜),
然后就好了。
总结:

  • 无论需求多蛋疼都尽可能不要修改现有的表结构;
  • binlog是个好东西,关键的时候可以救命;
  • 看文档不能看到一半,对于未知领域,最好从helloword开始来,心急什么豆腐都吃不到;
分享到:
6条评论
Ctrl+Enter
作者

大妖怪

大妖怪

APP:1 帖子:76 回复:200 积分:7517

已加入社区[2944]天

梦里巷口,可有你倚门回首

作者详情》
Top