MySQL误删数据找回神器之binlog2sql

一、使用前提

1. binlog_format为ROW,且binlog_row_image为full或noblog,默认为full。

2. 必须开启MySQL Server,理由有如下两点:

   ① 它是基于BINLOG_DUMP协议来获取binlog内容

   ② 需要读取server端information_schema.COLUMNS表,获取表结构的元信息,拼接成可视化的sql语句

3.需要一个数据库用户,授予最小权限如下:

mysql> GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO bin2sql_user IDENTIFIED BY 'your password';

注:

select:需要读取server端information_schema.COLUMNS表,获取表结构的元信息,拼接成可视化的sql语句

super/replication client:两个权限都可以,需要执行'SHOW MASTER STATUS', 获取server端的binlog列表

replication slave:通过BINLOG_DUMP协议获取binlog内容的权限

4.MySQL SERVER需要以下配置

[mysqld]
log_bin = /data/mysql/mysql-bin******.log
binlog_format = row
binlog_row_image = full   --不配置默认就是full

5.依赖python

Python版本 2.7 或 3.4+

二、安装过程

1.上传binlog2sql.tar.gz到/usr/local/下并解压(所有包在最下面附件获取,目录按照个人喜好即可)

[root@mysqlserver]# rz  binlog2sql.tar.gz
[root@mysqlserver]# tar –xf binlog2sql.tar.gz

2.安装如下依赖包

该工具的使用依赖以下三个包:

PyMySQL==0.7.8
wheel==0.24.0
mysql-replication==0.9 

安装过程如下:

[root@mysqlserver]# cd /usr/local/binlog2sql/binlog2sql_dependencies/
[root@mysqlserver]# tar -xf setuptools-0.6c11.tar.gz
[root@mysqlserver]# cd setuptools-0.6c11
[root@mysqlserver]# python setup.py install
[root@mysqlserver]# cd ..
[root@mysqlserver]# tar xvf pip-9.0.1.tar.gz
[root@mysqlserver]# cd pip-9.0.1
[root@mysqlserver]# python setup.py install
[root@mysqlserver]# cd ..
[root@mysqlserver]# pip install *.whl mysql-replication-0.9.tar.gz

三、Binlog2sql的使用方法

1.binlog2sql参数说明

--stop-never 持续同步binlog。可选。不加则同步至执行命令时最新的binlog位置。
-K, --no-primary-key 对INSERT语句去除主键。可选。
-B, --flashback 生成回滚语句,可解析大文件,不受内存限制,每打印一千行加一句SLEEP SELECT(1)。可选。与stop-never或no-primary-key不能同时添加。
解析范围控制
--start-file 起始解析文件。必须。
--start-position/--start-pos start-file的起始解析位置。可选。默认为start-file的起始位置。
--stop-file/--end-file 末尾解析文件。可选。默认为start-file同一个文件。若解析模式为stop-never,此选项失效。
--stop-position/--end-pos stop-file的末尾解析位置。可选。默认为stop-file的最末位置;若解析模式为stop-never,此选项失效。
--start-datetime 从哪个时间点的binlog开始解析,格式必须为datetime,如'2016-11-11 11:11:11'。可选。默认不过滤。
--stop-datetime 到哪个时间点的binlog停止解析,格式必须为datetime,如'2016-11-11 11:11:11'。可选。默认不过滤。
对象过滤
-d, --databases 只输出目标db的sql。可选。默认为空。
-t, --tables 只输出目标tables的sql。可选。默认为空。
可以通过--help查看:python binlog2sql.py --help

2.MySQL参数说明

-h host                      --主机
-P port                      --端口
-u user                      --数据库用户
-p password                  --密码

3.使用举例

下面使用binlog2sql进行格式为ROW的binlog生成www库t6表的标准命令

[root@mysqlserver]# python /data/app/binlog2sql/binlog2sql.py -h localhost -u bin2sql_user -p 123456 -d www -t t6 --start-file mysql-bin.000187 --start-pos=24524030 --stop-pos=24524244  > roll.sql

现在对www这个库的所有操作生成反向SQL,这个时候需要在上面语句的基础上带一个-B参数,就是flashback闪回的意思

[root@mysqlserver]# python /data/app/binlog2sql/binlog2sql.py -h localhost -u bin2sql_user -p 123456 -d www -t t6 --start-file mysql-bin.000187 --start-pos=24524030 --stop-pos=24524244 -B > roll.sql

然后将roll.sql找出对应误删的数据,登陆数据库执行source即可

附件:百度网盘下载链接

提取码:hv91

***注意:当出现误update时,该工具有局限性,误update后数据不能再有变更,否则有极大可能失败导致数据有误***

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值