#git clone https://github.com/danfengcao/binlog2sql.git
Cloning into 'binlog2sql'...
remote: Counting objects: 294, done.
remote: Total 294 (delta 0), reused 0 (delta 0), pack-reused 294
Receiving objects: 100% (294/294), 142.05 KiB | 109.00 KiB/s, done.
Resolving deltas: 100% (152/152), done.
[root@db210_15:21:00 /opt]
#cd binlog2sql/
[root@db210_15:21:06 /opt/binlog2sql]
#ll
total 52
drwxr-xr-x 2 root root 69 Aug 2 15:21 binlog2sql
drwxr-xr-x 2 root root 53 Aug 2 15:21 example
-rw-r--r-- 1 root root 35141 Aug 2 15:21 LICENSE
-rw-r--r-- 1 root root 9517 Aug 2 15:21 README.md
-rw-r--r-- 1 root root 54 Aug 2 15:21 requirements.txt
drwxr-xr-x 2 root root 36 Aug 2 15:21 tests
[root@db210_15:21:07 /opt/binlog2sql]
#pip install -r requirements.txt // 安装依赖包
Collecting PyMySQL==0.7.11 (from -r requirements.txt (line 1))
Downloading https://files.pythonhosted.org/packages/c6/42/c54c280d8418039bd2f61284f99cb6d9e0eae80383fc72ceb6eac67855fe/PyMySQL-0.7.11-py2.py3-none-any.whl (78kB)
100% |████████████████████████████████| 81kB 444kB/s
Collecting wheel==0.29.0 (from -r requirements.txt (line 2))
Downloading https://files.pythonhosted.org/packages/8a/e9/8468cd68b582b06ef554be0b96b59f59779627131aad48f8a5bce4b13450/wheel-0.29.0-py2.py3-none-any.whl (66kB)
100% |████████████████████████████████| 71kB 1.9MB/s
Collecting mysql-replication==0.13 (from -r requirements.txt (line 3))
Downloading https://files.pythonhosted.org/packages/dd/23/384047702e694139e9fe75a8ba7ad007e8942fd119ebadabc32ce19f70f2/mysql-replication-0.13.tar.gz
Installing collected packages: PyMySQL, wheel, mysql-replication
Found existing installation: PyMySQL 0.8.1
Uninstalling PyMySQL-0.8.1:
Successfully uninstalled PyMySQL-0.8.1
Running setup.py install for mysql-replication ... done
Successfully installed PyMySQL-0.7.11 mysql-replication-0.13 wheel-0.29.0
You are using pip version 8.1.2, however version 18.0 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
[root@db210_15:21:31 /opt/binlog2sql]
#pip install --upgrade pip
Collecting pip
Downloading https://files.pythonhosted.org/packages/5f/25/e52d3f31441505a5f3af41213346e5b6c221c9e086a166f3703d2ddaf940/pip-18.0-py2.py3-none-any.whl (1.3MB)
100% |████████████████████████████████| 1.3MB 675kB/s
Installing collected packages: pip
Found existing installation: pip 8.1.2
Uninstalling pip-8.1.2:
Successfully uninstalled pip-8.1.2
Successfully installed pip-18.0 #pip install -r requirements.txt
Requirement already satisfied: PyMySQL==0.7.11 in /usr/lib/python2.7/site-packages (from -r requirements.txt (line 1)) (0.7.11)
Requirement already satisfied: wheel==0.29.0 in /usr/lib/python2.7/site-packages (from -r requirements.txt (line 2)) (0.29.0)
Requirement already satisfied: mysql-replication==0.13 in /usr/lib/python2.7/site-packages (from -r requirements.txt (line 3)) (0.13)
[root@db210_17:16:44 /opt/binlog2sql]
  • 授权mysql 执行账号:
root@localhost [wenyz]>grant SELECT, REPLICATION SLAVE, REPLICATION CLIENT on *.* to wyz@'%';
Query OK, 0 rows affected (0.00 sec) root@localhost [wenyz]>show grants for wyz@'%';
+-------------------------------------------------------------------------+
| Grants for wyz@% |
+-------------------------------------------------------------------------+
| GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'wyz'@'%' |
+-------------------------------------------------------------------------+
1 row in set (0.00 sec)
  • 模拟删除数据.
root@localhost [wenyz]>select count(*) from t2;
+----------+
| count(*) |
+----------+
| 163798 |
+----------+
1 row in set (0.08 sec) root@localhost [wenyz]>delete from t2 limit 20;
Query OK, 20 rows affected (0.00 sec) root@localhost [wenyz]>flush logs;
Query OK, 0 rows affected (0.01 sec) root@localhost [wenyz]>show master logs;
+------------------+-----------+
| Log_name | File_size |
+------------------+-----------+
| mysql-bin.000236 | 268440480 |
| mysql-bin.000237 | 268436866 |
| mysql-bin.000238 | 268438786 |
| mysql-bin.000239 | 268438976 |
| mysql-bin.000240 | 55243968 |
| mysql-bin.000241 | 1310 |
| mysql-bin.000242 | 444 |
| mysql-bin.000243 | 2986 | //删除记录在此文件中
| mysql-bin.000244 | 194 |
+------------------+-----------+
244 rows in set (0.00 sec)
  • 执行mysqlbinlog2sql
[root@db210_17:25:54 /opt/binlog2sql/binlog2sql]
#python binlog2sql.py -uwyz -h127.0.0.1 -P3506 -pzstzst -dwenyz --start-file='mysql-bin.000243' > delsql.sql
Traceback (most recent call last):
File "binlog2sql.py", line 6, in <module>
import pymysql
ModuleNotFoundError: No module named 'pymysql'
[root@db210_17:26:00 /opt/binlog2sql/binlog2sql]
#vi binlog2sql.py
#!/usr/bin/env python2 //把python 为python2
# -*- coding: utf-8 -*- 结果还报错,后来是因为我环境中python指向的是3.5
#python binlog2sql.py -uwyz -h127.0.0.1 -P3506 -pzstzst -dwenyz --start-file='mysql-bin.000243' > delsql.sql
Traceback (most recent call last):
File "binlog2sql.py", line 6, in <module>
import pymysql
ModuleNotFoundError: No module named 'pymysql' #python2 binlog2sql.py -uwyz -h127.0.0.1 -P3506 -pzstzst -dwenyz --start-file='mysql-bin.000243' > delsql.sql
[root@db210_17:26:56 /opt/binlog2sql/binlog2sql]
#ll
#cat delsql.sql limit 20
USE wenyz;
GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'wyz'@'%';
DELETE FROM `wenyz`.`t2` WHERE `date`='2018-07-29' AND `id`=3866964 AND `ti`='ffddssoie' LIMIT 1; #start 2370 end 2908 time 2018-08-02 17:13:25
... ...
  • 通过以上操作可以确定我们删除数据操作的事件位置,并执行以下命令恢复数据.
[root@db210_21:17:12 /opt/binlog2sql/binlog2sql]
#python2 binlog2sql.py -uwyz -h127.0.0.1 -P3506 -pzstzst -dwenyz --start-file='mysql-bin.000243' -B --start-pos=2370 --end-pos=2908 |mysql -S /tmp/mysql3506.sock -p
Enter password:
[root@db210_21:17:45 /opt/binlog2sql/binlog2sql]
mysql --login-path=p3506	(wd: /tmp)
root@localhost [wenyz]>select count(*) from t2;
ERROR 2006 (HY000): MySQL server has gone away
No connection. Trying to reconnect...
Connection id: 32
Current database: wenyz +----------+
| count(*) |
+----------+
| 163798 |
+----------+
1 row in set (0.04 sec) root@localhost [wenyz]>

binlog2sql 回滚误操作的更多相关文章

  1. Git回滚merge操作

    执行完merge操作后,没有修改代码 1.命令 ⑴ git reflog 查看merge操作的上一个提交记录的版本号 ⑵ git reset –hard 版本号 这样可以回滚到merge之前的状态 2 ...

  2. SQL Server:在事务中回滚TRUNCATE操作

    我们一般都认为TRUNCATE是一种不可回滚的操作,它会删除表中的所有数据以及重置Identity列. 如果你在事务中进行TRUNCATE操作,就能回滚.反之,它就不会从日志文件文件恢复数据.它不会在 ...

  3. binlog2sql实现MySQL误操作的恢复

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

  4. MySQL binlog2sql实现MySQL误操作的恢复

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

  5. git push 错误,回滚 push操作

    作者:故事我忘了¢个人微信公众号:程序猿的月光宝盒 0.记一次使用git push后,覆盖了同事代码的糗事 前言: ​ 都在WebStorm中操作,Idea或者PyCharm同理 ​ 为了高度还原尴尬 ...

  6. MySQL【Update误操作】回滚(转)

    前言:      继上一篇MySQL[Delete误操作]回滚之后,现在介绍下Update回滚,操作数据库时候难免会因为“大意”而误操作,需要快速恢复的话通过备份来恢复是不太可能的,因为需要还原和bi ...

  7. mysql基于binlog回滚工具_flashback(python版本)

        update.delete的条件写错甚至没有写,导致数据操作错误,需要恢复被误操作的行记录.这种情形,其实时有发生,可以选择用备份文件+binlog来恢复到测试环境,然后再做数据修复,但是这样 ...

  8. git回滚

    Git回滚的常用手法 07net01.com 发布于 4小时前 评论 传统VCS的回滚操作 对于版本控制系统VCS来说,回滚这个操作应该是个很普通也是很重要的需求. 如果你是传统VCS,比如SVN或者 ...

  9. 原创|1分钟搞定 Nginx 版本的平滑升级与回滚

    Nginx无论是对于运维.开发.还是测试来说,都是日常工作需要掌握的一个知识点,之前也写过不少关于Nginx相关的文章: Nginx服务介绍与安装 Nginx服务配置文件介绍 Nginx配置虚拟主机 ...

随机推荐

  1. matlab edge

    edge在matlab中用来进行边缘检测BW = edge(I) 采用灰度或一个二值化图像I作为它的输入,并返回一个与I相同大小的二值化图像BW,在函数检测到边缘的地方为1,其他地方为0. BW = ...

  2. HUAS 1476 不等数列(DP)

    考虑DP. 如果把转移看出当前位填什么数的话,这样是有后效性的. 如果考虑当前的序列是将1至n依次插入序列中的话. 考虑将i插入1到i-1的序列中,如果插入到<号中或者首部,那么最后就会多出一个 ...

  3. 前台界面(1)---HTML基本定义及常见标签

    已经很久没有更新博客了,从今天开始要继续走在学习的路上,话不多说,先来干货: 目录 1. HTML定义 2. H标签 3. Img标签 4. P标签 5. A标签 6. 无序列表 7. 有序列表 8. ...

  4. BZOJ1030:[JSOI2007]文本生成器——题解

    http://www.lydsy.com/JudgeOnline/problem.php?id=1030 Description JSOI交给队员ZYX一个任务,编制一个称之为“文本生成器”的电脑软件 ...

  5. BZOJ2565:最长双回文串——题解

    http://www.lydsy.com/JudgeOnline/problem.php?id=2565 题目大意: 顺序和逆序读起来完全一样的串叫做回文串.比如acbca是回文串,而abc不是(ab ...

  6. B树,B+树,B*树简介

    B树(有些人也叫B-树) 是一种多路搜索树 : 1.定义任意非叶子结点最多只有M个儿子:且M>2: 2.根结点的儿子数为[2, M]: 3.除根结点以外的非叶子结点的儿子数为[M/2, M]: ...

  7. eclipse ide for java ee developers 开发环境搭建(J2EE) 【转载】

    使用eclipse真的有年头了,相信java程序员没有不知道它的,最近在给团队中新来的应届生做指导,专门讲解了一下Eclipse开发环境的搭建过程, 一是帮助他们尽快的熟悉IDE的使用,二也是保证团队 ...

  8. ACE反应器(Reactor)模式(3)

    转载于:http://www.cnblogs.com/TianFang/archive/2006/12/18/595938.html 在服务器端使用Reactor框架 使用Reactor框架的服务器端 ...

  9. Bazinga 字符串HASH 这题不能裸HASH 要优化 毒瘤题

    Ladies and gentlemen, please sit up straight. Don't tilt your head. I'm serious. For nn given string ...

  10. HDU3585 最大团+二分

    maximum shortest distance Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Jav ...