binlog2sql 回滚误操作
参考过在资料:
https://github.com/wuyongshenghub/mysqlbinlog2sql
https://www.cnblogs.com/xuanzhi201111/p/6602489.html下载及安装
#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 回滚误操作的更多相关文章
- Git回滚merge操作
执行完merge操作后,没有修改代码 1.命令 ⑴ git reflog 查看merge操作的上一个提交记录的版本号 ⑵ git reset –hard 版本号 这样可以回滚到merge之前的状态 2 ...
- SQL Server:在事务中回滚TRUNCATE操作
我们一般都认为TRUNCATE是一种不可回滚的操作,它会删除表中的所有数据以及重置Identity列. 如果你在事务中进行TRUNCATE操作,就能回滚.反之,它就不会从日志文件文件恢复数据.它不会在 ...
- binlog2sql实现MySQL误操作的恢复
对于MySQL数据库中的误操作删除数据的恢复问题,可以使用基于MySQL中binlog做到类似于闪回或者生成反向操作的SQL语句来实现,是MySQL中一个非常实用的功能.原理不难理解,基于MySQL的 ...
- MySQL binlog2sql实现MySQL误操作的恢复
对于MySQL数据库中的误操作删除数据的恢复问题,可以使用基于MySQL中binlog做到类似于闪回或者生成反向操作的SQL语句来实现,是MySQL中一个非常实用的功能.原理不难理解,基于MySQL的 ...
- git push 错误,回滚 push操作
作者:故事我忘了¢个人微信公众号:程序猿的月光宝盒 0.记一次使用git push后,覆盖了同事代码的糗事 前言: 都在WebStorm中操作,Idea或者PyCharm同理 为了高度还原尴尬 ...
- MySQL【Update误操作】回滚(转)
前言: 继上一篇MySQL[Delete误操作]回滚之后,现在介绍下Update回滚,操作数据库时候难免会因为“大意”而误操作,需要快速恢复的话通过备份来恢复是不太可能的,因为需要还原和bi ...
- mysql基于binlog回滚工具_flashback(python版本)
update.delete的条件写错甚至没有写,导致数据操作错误,需要恢复被误操作的行记录.这种情形,其实时有发生,可以选择用备份文件+binlog来恢复到测试环境,然后再做数据修复,但是这样 ...
- git回滚
Git回滚的常用手法 07net01.com 发布于 4小时前 评论 传统VCS的回滚操作 对于版本控制系统VCS来说,回滚这个操作应该是个很普通也是很重要的需求. 如果你是传统VCS,比如SVN或者 ...
- 原创|1分钟搞定 Nginx 版本的平滑升级与回滚
Nginx无论是对于运维.开发.还是测试来说,都是日常工作需要掌握的一个知识点,之前也写过不少关于Nginx相关的文章: Nginx服务介绍与安装 Nginx服务配置文件介绍 Nginx配置虚拟主机 ...
随机推荐
- matlab edge
edge在matlab中用来进行边缘检测BW = edge(I) 采用灰度或一个二值化图像I作为它的输入,并返回一个与I相同大小的二值化图像BW,在函数检测到边缘的地方为1,其他地方为0. BW = ...
- HUAS 1476 不等数列(DP)
考虑DP. 如果把转移看出当前位填什么数的话,这样是有后效性的. 如果考虑当前的序列是将1至n依次插入序列中的话. 考虑将i插入1到i-1的序列中,如果插入到<号中或者首部,那么最后就会多出一个 ...
- 前台界面(1)---HTML基本定义及常见标签
已经很久没有更新博客了,从今天开始要继续走在学习的路上,话不多说,先来干货: 目录 1. HTML定义 2. H标签 3. Img标签 4. P标签 5. A标签 6. 无序列表 7. 有序列表 8. ...
- BZOJ1030:[JSOI2007]文本生成器——题解
http://www.lydsy.com/JudgeOnline/problem.php?id=1030 Description JSOI交给队员ZYX一个任务,编制一个称之为“文本生成器”的电脑软件 ...
- BZOJ2565:最长双回文串——题解
http://www.lydsy.com/JudgeOnline/problem.php?id=2565 题目大意: 顺序和逆序读起来完全一样的串叫做回文串.比如acbca是回文串,而abc不是(ab ...
- B树,B+树,B*树简介
B树(有些人也叫B-树) 是一种多路搜索树 : 1.定义任意非叶子结点最多只有M个儿子:且M>2: 2.根结点的儿子数为[2, M]: 3.除根结点以外的非叶子结点的儿子数为[M/2, M]: ...
- eclipse ide for java ee developers 开发环境搭建(J2EE) 【转载】
使用eclipse真的有年头了,相信java程序员没有不知道它的,最近在给团队中新来的应届生做指导,专门讲解了一下Eclipse开发环境的搭建过程, 一是帮助他们尽快的熟悉IDE的使用,二也是保证团队 ...
- ACE反应器(Reactor)模式(3)
转载于:http://www.cnblogs.com/TianFang/archive/2006/12/18/595938.html 在服务器端使用Reactor框架 使用Reactor框架的服务器端 ...
- Bazinga 字符串HASH 这题不能裸HASH 要优化 毒瘤题
Ladies and gentlemen, please sit up straight. Don't tilt your head. I'm serious. For nn given string ...
- HDU3585 最大团+二分
maximum shortest distance Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Jav ...