千家信息网

binlog2sql如何实现MySQL误操作的恢复

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,小编给大家分享一下binlog2sql如何实现MySQL误操作的恢复,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!对于My
千家信息网最后更新 2026年11月01日binlog2sql如何实现MySQL误操作的恢复

小编给大家分享一下binlog2sql如何实现MySQL误操作的恢复,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

对于MySQL数据库中的误操作删除数据的恢复问题,可以使用基于MySQL中binlog做到类似于闪回或者生成反向操作的SQL语句来实现,是MySQL中一个非常实用的功能。

原理不难理解,基于MySQL的row格式的binlog中,记录历史的增删改SQL信息,基于此解析出来对应的SQL语句(回滚的话就是反向的SQL语句)。

在格式为binlog格式为row的日志模式下,binlog中的内容记录了数据库中曾经执行的增删改信息,都是包含了反向信息的比如执行delete from table where pk_id = 1;按照主键来删除一条记录

对应的binlog中的sql语句为:

delete from table where pk_id = 1 and name = ‘xxx’ and other_column = ‘xxx’;

where条件不仅仅是原始语句的Id,而且还包括中这一行所有的字段的信息的update操作也同理,不但记录了update操作,同时记录了update记录在更新之前的每一个字段的值。这样就可以利用这个日志来生成反向操作信息。

如下是利用mysqlbinlog 工具解析出来的一个MySQL中典型的binlog日志文件的部分内容,可以清楚地看到执行过的sql语句的信息。

说到这里,对于MySQL中基于binlog的一些应用,比如复制或者数据库还原,其实就是重复执行某个数据库上的历史执行过的增删改SQL语句来实现的。

题外话:MySQL的binlog作用记录事务语句的作用上,基本上等同于SQLServer的的事务日志。但是SQL Server的事务日志正的二进制内容的,微软官方也没有提供解析的方法,而MySQL中完全可以通过mysqlbinlog 来解析出来这个日志中的内容。

如下是通过MySQL自带的mysqlbinlog工具解析出来的binlog日志文件中的信息,可以看到其中的SQL语句信息。

知道了binlog中的内容,就可以基于这个binlog来实现各种实用的功能,典型的就是误删数据的还原操作,比如苏家小萝卜同学就自己用Python搞定这个解析功能。

类似功能比较知名的还有大众点评网DBA自己写的binlog2sql工具,也是久闻大名,终于有机会尝试了。

binlog2sql需要语句pip安装,所以需要先安装pip

pip 安装参考:

https://www.cnblogs.com/technologylife/p/5870576.html

binlog2sql下载以及安装:

https://github.com/danfengcao/binlog2sql

完成了binlog2sql之后,就可以使用它来实现数据的还原操作了,如下模拟一个误操作的恢复

在开启了binlog,日志格式为row的测试数据下,对于测试表test_01,分别执行以下sql语句:

insert into test_01 values (1,'aaa');  insert into test_01 values (2,'bbb');  insert into test_01 values (3,'vvv');  --以下误操作,更新了全部数据  update test_01 set name = 'xxx';

通过show master logs;找到当前的binlog文件,对应的sql语句的执行就存储在当前这个binlog中,binlog2sql的目标就是这个文件

参考下图,可以发现

执行:python binlog2sql.py -h227.0.0.1 -P3306 -uroot -p’root’ -ddb01 -t test_01 –start-file=’binlog.000021′ (更多参数以及使用方式参考下文链接),通过binlog2sql来解析当前的binlog文件,解析出来的SQL语句就是正常SQL语句的执行(insert insert insert update(3行记录))

执行:python binlog2sql.py -h227.0.0.1 -P3306 -uroot -p’root’ -ddb01 -t test_01 –start-file=’binlog.000021′ -B,通过-B参数生成反向的操作信息

加参数-B解析出来的SQL语句与上面的SQL语句刚好相反,包括顺序,也即以倒序的方式生成反向的操作

原始操作是insert insert insert update update update,反向的操作就是upfate update update delete delete delete,这样一来,可以根据具体的情况,截取生成的反向的sql语句,进行误操作的还原。

以上操作注意安装的binlog2sql的路径问题,如果路径不对,找不到binlog2sql.py,上述命令也就无法执行

以上是"binlog2sql如何实现MySQL误操作的恢复"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

语句 信息 数据 日志 内容 就是 文件 生成 功能 数据库 格式 参考 事务 参数 工具 篇文章 原始 实用 作用 典型 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技海报 互联网科技工作委员会副主任毛军 互联网最新的科技 致骋互联网科技 伴你行互联网科技有限公司 富国互联网科技创新基金 以后互联网后是啥科技 顶级互联网科技成果有哪些 武汉健翔互联网络科技有限公司 昊天互联网科技有限公司 赶超互联网科技 微信多开 世界互联网领先科技成果获奖 徐州市互联网科技有限公司 中科明德北京互联网科技 滨湖区互联网智能科技产品有哪些 众安科技工业互联网合作 互联网第三次科技革命特征 南京一网一红互联网科技有限公司 深圳互联网科技园地址 黑龙江互联网科技公司 天津市摩尔互联网科技 互联网是不是新科技 互联网络科技有限公司 互联网科技小贷 互联网与新科技 银优互联网科技有限公司 汇久创客互联网科技 互联网科技公司有风险吗 互联网方面的科技前沿 互联网科技大会大佬
0