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
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后数据不能再有变更,否则有极大可能失败导致数据有误***