binlog2sql

1.安装

shell> git clone https://github.com/danfengcao/binlog2sql.git && cd binlog2sql
shell> pip install -r requirements.txt

2.用户授权

create user 'zsd'@'localhost' identified by 'zsd';
GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'zsd'@'localhost';

直接的sql场景

MariaDB [zsd]> select now();
+---------------------+
| now() |
+---------------------+
| 2019-09-29 14:21:15 |
+---------------------+
1 row in set (0.020 sec) MariaDB [zsd]> create table test2(id int,name varchar(20));
MariaDB [zsd]> insert into test2 values (1,'张三'); MariaDB [zsd]> insert into test2 values (1,'李四'); MariaDB [zsd]> insert into test2 values (1,'王五'); MariaDB [zsd]> select * from test2;
+------+--------+
| id | name |
+------+--------+
| 1 | 张三 |
| 1 | 李四 |
| 1 | 王五 |
+------+--------+
3 rows in set (0.025 sec) MariaDB [zsd]> select now();
+---------------------+
| now() |
+---------------------+
| 2019-09-29 14:22:32 |
+---------------------+
1 row in set (0.014 sec) MariaDB [zsd]> delete from test2;
Query OK, 3 rows affected (0.063 sec) MariaDB [zsd]> commit;
Query OK, 0 rows affected (0.008 sec) MariaDB [zsd]> select now();
+---------------------+
| now() |
+---------------------+
| 2019-09-29 14:22:50 |
+---------------------+
1 row in set (0.014 sec) MariaDB [zsd]> select * from test2;
Empty set (0.012 sec)

查看被删除数据的位置和时间。

[root@oradb binlog2sql]# python binlog2sql.py -h127.0.0.1 -P3306 -uzsd -p'zsd' -dzsd -ttest2 --start-file='mysql-bin.000003'  --start-datetime='2019-09-29 14:22:32' --stop-datetime='2019-09-29 14:22:50'
# D;
DELETE FROM `zsd`.`test2` WHERE `id`=1 AND `name`='张三' LIMIT 1; #start 3717 end 3918 time 2019-09-29 14:22:43
DELETE FROM `zsd`.`test2` WHERE `id`=1 AND `name`='李四' LIMIT 1; #start 3717 end 3918 time 2019-09-29 14:22:43
DELETE FROM `zsd`.`test2` WHERE `id`=1 AND `name`='王五' LIMIT 1; #start 3717 end 3918 time 2019-09-29 14:22:43

加上-B参数,把delete语句变成insert语句。用于数据的恢复。

[root@oradb binlog2sql]# python binlog2sql.py -h127.0.0.1 -P3306 -uzsd -p'zsd' -dzsd -ttest2 --start-file='mysql-bin.000003'  --start-datetime='2019-09-29 14:22:32' --stop-datetime='2019-09-29 14:22:50' -B
INSERT INTO `zsd`.`test2`(`id`, `name`) VALUES (1, '王五'); #start 3717 end 3918 time 2019-09-29 14:22:43
INSERT INTO `zsd`.`test2`(`id`, `name`) VALUES (1, '李四'); #start 3717 end 3918 time 2019-09-29 14:22:43
INSERT INTO `zsd`.`test2`(`id`, `name`) VALUES (1, '张三'); #start 3717 end 3918 time 2019-09-29 14:22:43

【MySQL】binlog2sql的更多相关文章

  1. 1229【MySQL】性能优化之 Index Condition Pushdown

    转自http://blog.itpub.net/22664653/viewspace-1210844/  [MySQL]性能优化之 Index Condition Pushdown2014-07-06 ...

  2. 【MySQL】drop大表

    利用硬链接和truncate降低drop table对线上环境的影响 众所周知drop table会严重的消耗服务器IO性能,如果被drop的table容量较大,甚至会影响到线上的正常. 首先,我们看 ...

  3. 【MySQL】结构行长度的一些限制

    今天被开发提交的DDL变更再次困惑,表中字段较多,希望将已有的两个varchar(4000)字段改为varchar(20000),我想innodb对varchar的存储不就是取前768字节记录当前行空 ...

  4. 【MySql】赶集网mysql开发36条军规

    [MySql]赶集网mysql开发36条军规 2012-05-14 14:02:33 分类: Linux   写在前面的话: 总是在灾难发生后,才想起容灾的重要性: 总是在吃过亏后,才记得曾经有人提醒 ...

  5. 【MySQL】JDBC连接MySQL的一些问题以及解决办法

    [MySQL]JDBC连接MySQL的一些问题以及解决办法 http://blog.csdn.net/baofeidyz/article/details/52017047

  6. 【MySQL】Linux下MySQL 5.5、5.6和5.7的RPM、二进制和源码安装

      [MySQL]Linux下MySQL 5.5.5.6和5.7的RPM.二进制和源码安装 1.1  BLOG文档结构图 1.2  前言部分 1.2.1  导读和注意事项 各位技术爱好者,看完本文后, ...

  7. 【Linux】【MySQL】CentOS7、MySQL8.0.13 骚操作速查笔记——专治各种忘词水土不服

    1.前言 [Linux][MySQL]CentOS7安装最新版MySQL8.0.13(最新版MySQL从安装到运行) 专治各种忘词,各种水土不服. - -,就是一个健忘贵的速查表:(当然不包括SQL的 ...

  8. [赶集网] 【MySql】赶集网mysql开发36条军规

    [赶集网] [MySql]赶集网mysql开发36条军规 (一)核心军规(1)不在数据库做运算   cpu计算务必移至业务层:(2)控制单表数据量   int型不超过1000w,含char则不超过50 ...

  9. 【mysql】autocommit=0后,commit, rollback无效

    之前在[mysql]MySQLdb中的事务处理中用autocommit和commit()以及rollback()实现了事务处理. 但后来,用同样的代码在另一个数据库中运行却失败了.找了一个下午的原因. ...

随机推荐

  1. 高效并发一 Java内存模型与Java线程(绝对干货)

    高效并发一 Java内存模型与Java线程 本篇文章,首先了解虚拟机Java 内存模型的结构及操作,然后讲解原子性,可见性,有序性在 Java 内存模型中的体现,最后介绍先行发生原则的规则和使用. 在 ...

  2. DesignPattern系列__07合成复用原则

    基本介绍 合成复用原则的核心,就是尽量去使用组合.聚合等方式,而不是使用继承. 核心思想 1.找出应用中可能需要变化之处,把它们独立出来,不要和那些不需要变化的代码混在一起. 2.针对接口编程,而不是 ...

  3. maven 学习---生成基于Maven的项目文档站点

    在Maven中,可以使用“mvn site”,为您的项目信息生成文档站点. mvn site 生成的网站是在项目的“target/site”文件夹中. mvn site 示例 请参见通过“mvn si ...

  4. vue学习指南:第三篇(详细) - vue的生命周期

    今天小编给大家详细讲解一下 vue 的生命周期.希望大家多多指教,哪里有遗漏的地方,也请大家指点出来 谢谢. 一. 怎么理解 Vue 的生命周期的? 生命周期:从无到有,到到无的一个过程.Vue的生命 ...

  5. shell脚本按当前日期输出日志

    shell脚本基本技能是设置变量,输出信息.如下: sh脚本输出到控制台 将以上脚本保存到test.sh脚本文件中,并赋予可执行权限:sudo chmod +x test.sh 执行脚本:bash t ...

  6. Python列表操作与深浅拷贝(6)——列表索引、查询、修改、扩展

    列表list定义 L1 = [] L2 = [1,2,'abc'] L3 = list() L4 = list(range(5)) L5 = [1,'abc',True,None,[4,5,'abc' ...

  7. 【微信小程序】开发实战 之 「视图层」WXML & WXSS 全解析

    在<微信小程序开发实战 之 「配置项」与「逻辑层」>中我们详细阐述了小程序开发的程序和页面各配置项与逻辑层的基础知识.下面我们继续解析小程序开发框架中的「视图层」部分.学习完这两篇文章的基 ...

  8. git的使用(二)

    GITHUB 简介 github可以是全世界最大的同性交友网站,其实就是和百度云一个性质. gitHub于2008年4月10日正式上线,除了git代码仓库托管及基本的 Web管理界面以外,还提供了订阅 ...

  9. E08【选尺码】I'm looking for size 43

    核心句型 I'm looking for size 43 我想要43号的 场景对话 A:Can I help you?您需要什么? B:Yes,can I try on those shoes,ple ...

  10. 初始v4l2(六)-------根据虚拟驱动vivi的使用彻底分析摄像头驱动

    前面的几篇文章已经分析了v4l2的框架,对框架的分析是比较粗浅的,能基本清楚函数之间的调用过程.但是很多内容并没有分析,比如说里面有很多ioctl,并没有分析哪些ioctl是必须的,也没有分析如何从应 ...