作家
登录

binlog2sql实现MySQL误操作的恢复

作者: 来源: 2018-03-26 15:24:19 阅读 我要评论

沙龙晃荡 | 3月31日 京东、微博、华为拭魅战专家与你合营商量容器技巧实践!


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语句为:

  1. 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 安装参考:

binlog2sql下载以及安装:

https://github.com/danfengcao/binlog2sql

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

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

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


  推荐阅读

  AI、IoT再火,仍然离不开大数据分析

将来十年大年夜数据分析的成长趋势 沙龙晃荡 | 3月31日 京东、微博、华为拭魅战专家与你合营商量容器技巧实践! 今天的大年夜数据分析市场与几年前的市场截然不合,恰是因为海量数据的暴增,>>>详细阅读


本文标题:binlog2sql实现MySQL误操作的恢复

地址:http://www.17bianji.com/lsqh/40887.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)