沙龙晃荡 | 3月31日 京东、微博、华为拭魅战专家与你合营商量容器技巧实践!
对于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 安装参考:
binlog2sql下载以及安装:
https://github.com/danfengcao/binlog2sql
完成了binlog2sql之后,就可以应用它来实现数据的还原操作了,如下模仿一?误操作的恢复
https://www.cnblogs.com/technologylife/p/5870576.html
在开启了binlog,日记格局为row的测试数据下,对于测试表test_01,分别履行以下sql语句:
推荐阅读
将来十年大年夜数据分析的成长趋势 沙龙晃荡 | 3月31日 京东、微博、华为拭魅战专家与你合营商量容器技巧实践! 今天的大年夜数据分析市场与几年前的市场截然不合,恰是因为海量数据的暴增,>>>详细阅读
地址:http://www.17bianji.com/lsqh/40887.html
1/2 1