作者danfengcao,大众点评DBA团队。它是一款开源的MySQL binlog解析工具,通过伪装slave拉取binlog进行处理。我们使用该工具可以得到原始SQL、回滚SQL、去除主键的insert SQL等。
项目地址: https://github.com/danfengcao/binlog2sql
数据库配置要求
[mysqld]
binlog_format=row
binlog_row_image=full
binlog_transaction_compression=OFF限制
- 使用回滚/闪回功能时,binlog_format=row,且binlog_row_image=full;
- 关闭binlog压缩功能,即binlog_transaction_compression=OFF;(否则无法获取到SQL语句)
- binlog2sql只能回滚DML,不能回滚DDL;
- 创建binlog2sql访问的mysql用户时,必须指定密码插件为mysql_native_password;
- mysql连接用户需要select, replication slave, replication client权限;
下载安装binlog2sql
安装python3.6.8
#编译安装python3.6.8
tar -xvJf Python-3.6.8.tar.xz -C /data/soft/
cd /data/soft/Python-3.6.8
./configure prefix=/usr/local/python3
make && make install
ln -fs /usr/local/python3/bin/python3 /usr/bin/python3
ln -fs /usr/local/python3/bin/pip3 /usr/bin/pip3 部署binlog2sql
#下载binlog2sql
git clone https://github.com/danfengcao/binlog2sql.git
[root@test binlog2sql]# pwd
/root/binlog2sql
[root@test binlog2sql]# ls
binlog2sql example LICENSE README.md requirements.txt tests
#编辑requirements.txt文件。如果是mysql8.0,需将PyMySQL==0.7.11修改为PyMySQL==0.9.3
[root@test binlog2sql]# vi requirements.txt
PyMySQL==0.9.3
wheel==0.29.0
mysql-replication==0.13
#安装python3依赖模块
pip3 install -i http://mirrors.aliyun.com/pypi/simple --trusted-host mirrors.aliyun.com requirements.txtbinlog2sql参数介绍
# 解析模式
--stop-never 持续解析binlog。可选。默认False,同步至执行命令时最新的binlog位置。
--no-primary-key,-K 对INSERT语句去除主键。可选。默认False
--flashback,-B 生成回滚SQL,可解析大文件,不受内存限制。可选。默认False。与stop-never或no-primary-key不能同时添加。
# 解析范围控制
--start-file 起始解析文件,只需文件名,无需全路径 。必须。
--start-position/--start-pos 起始解析位置。可选。默认为start-file的起始位置。
--stop-file/--end-file 终止解析文件。可选。默认为start-file同一个文件。若解析模式为stop-never,此选项失效。
--stop-position/--end-pos 终止解析位置。可选。默认为stop-file的最末位置;若解析模式为stop-never,此选项失效。
--start-datetime 起始解析时间,格式'%Y-%m-%d %H:%M:%S'。可选。默认不过滤。
--stop-datetime 终止解析时间,格式'%Y-%m-%d %H:%M:%S'。可选。默认不过滤。
# 对象过滤
--databases,-d 只解析目标db的sql,多个库用空格隔开,如-d db1 db2。可选。默认为空。
--tables,-t 只解析目标table的sql,多张表用空格隔开,如-t tbl1 tbl2。可选。默认为空。
--only-dml 只解析dml,忽略ddl。可选。默认False。
--sql-type 只解析指定类型,支持INSERT, UPDATE, DELETE。多个类型用空格隔开,如--sql-type INSERT DELETE。可选。默认为增删改都解析。用了此参数但没填任何类型,则三者都不解析。解析binlog文件
获取原标准SQL
python3 binlog2sql-master/binlog2sql/binlog2sql.py -hxxx -P3306 -uroot -p'xxx' -ddbtest -tscott --start-file='mysql-bin.000001' --start-datetime='2023-05-11 14:12:52' --stop-datetime='2023-05-11 14:47:00' > /tmp/a.sql生产回滚SQL
python3 binlog2sql-master/binlog2sql/binlog2sql.py -hxxx -P3306 -uroot -p'xxx' -ddbtest -tscott --start-file='mysql-bin.000001' --start-datetime='2023-05-11 14:12:52' --stop-datetime='2023-05-11 14:47:00' -B > /tmp/a.sql最后修改时间:2023-05-22 20:32:13
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




