赞
踩
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后数据不能再有变更,否则有极大可能失败导致数据有误***
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。