mysqlbinlog 恢复mysql数据

最近做了一个很危险的操作,update mysql的时候没有加where条件,导致数据全更改了(后来通过备份恢复了)。大家要引以为戒,千万慎重。于是,我就研究了一下通过mysqlbinlog恢复数据,以下为实际操作步骤。

MySQL版本5.7.24

关键命令 mysqlbinlog --stop-position="1723" --skip-gtids -d test /var/lib/mysql/mysql-bin.000003 | mysql -uroot -p

一、先看原数据

select * from user_test;

二、刷新binlog日志

flush logs;

这一步的目的是让binlog刷新一次,让这个时间点之后的操作都记录到新的binlog日志里;

mysql-bin.000004  就是新生成的binlog日志

三、更新数据

update user_test set name='老五' where id=3;

四、查看mysql-bin.000003最后一次commit的位置

 show binlog events in 'mysql-bin.000003';

从上图可以看出最后一次提交的位置是1723。这里一定要搞清楚你想要恢复的数据的位置,因为我想恢复到更新的操作之前,更新操作是在mysql-bin.000004中,所以我只需要恢复到mysql-bin.000003的最后一次提交就可以了。

五、恢复数据

新开一个xshell窗口,执行命令:

mysqlbinlog --stop-position="1723" --skip-gtids -d test /var/lib/mysql/mysql-bin.000003 | mysql -uroot -p

执行完上面的命令数据就恢复到1723的位置了,我们来看下,表中的数据:

数据已经恢复。

这里解释下这条命令 --stop-position指的是截至的位置,也可以指定--start-position就是开始的位置,--stop-datetime截至时间,其他的可以自己查,大概意思都一样;-d 指的是要更改的数据库;--skip-gtids是忽略GTIDs报错。其他的就不说了,很基本的MySQL命令。

到此,数据恢复完毕。在此奉劝各位技术人员,关键数据一定要备份。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于使用mysqlbinlog恢复数据,您可以按照以下步骤进行操作: 1. 首先,您需要确保已经备份了要恢复MySQL二进制日志文件(通常以binlog开头)。如果没有备份,恢复数据将会变得困难,甚至不可能。 2. 定位最新的完整备份文件和二进制日志文件。如果您只有备份文件而没有二进制日志文件,您可以使用该备份文件还原数据库,并且会丢失备份后的更改。 3. 在MySQL服务器上停止所有相关的服务,以确保数据一致性。可以使用以下命令: ``` sudo service mysql stop ``` 4. 使用mysqlbinlog命令来解析和恢复二进制日志文件。例如,使用以下命令从二进制日志文件创建SQL语句文件: ``` mysqlbinlog <binlog文件名> > restore.sql ``` 5. 打开恢复.sql文件,并检查其的SQL语句,确保其包含正确的恢复操作。可以使用文本编辑器进行编辑。 6. 重新启动MySQL服务并登录到MySQL服务器: ``` sudo service mysql start mysql -u <用户名> -p ``` 7. 在MySQL命令行执行恢复.sql文件的SQL语句: ``` source /path/to/restore.sql; ``` 8. 等待恢复操作完成。这可能需要一些时间,具体取决于二进制日志文件的大小和恢复操作的复杂性。 请注意,使用mysqlbinlog恢复数据可能会有一定的风险,因此在执行之前务必进行备份,并在恢复之前仔细检查和验证恢复的SQL语句。此外,根据具体情况可能需要额外的步骤和配置,请参考MySQL官方文档或专业人士的建议。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值