go版MySQL binlog解析工具
● 本地离线解析:指定本地binlog文件和要解析的表结构即可
● 远程在线解析:指定远程数据库地址,起止时间范围或binlog范围,可指定库/表和操作类型,GTID/线程号等
● 解析服务API:提供HTTP协议方式的解析接口,支持解析和打包下载
参数
● mysql连接配置
○ -h host;
○ -P port;
○ -u user;
○ -p password
● 解析模式
○ --stop-never 持续解析binlog。可选。默认False,同步至执行命令时最新的binlog位置。
○ -K, --no-primary-key 对INSERT语句去除主键。可选。默认False
○ -B, --flashback 生成回滚SQL,可解析大文件,不受内存限制。可选。默认False。与stop-never或no-primary-key不能同时添加。
○ --back-interval -B模式下,每打印一千行回滚SQL,加一句SLEEP多少秒,如不想加SLEEP,请设为0。可选。默认1.0。
● 解析范围控制
○ --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’。可选。默认不过滤。
● 对象过滤
○ -d, --databases 只解析目标db的sql,多个库用空格隔开,如-d db1 db2。可选。默认为空。
○ -t, --tables 只解析目标table的sql,多张表用空格隔开,如-t tbl1 tbl2。可选。默认为空。
○ --only-dml 只解析dml,忽略ddl。可选。默认False。
○ --sql-type 只解析指定类型,支持INSERT, UPDATE, DELETE。多个类型用空格隔开,如–sql-type INSERT DELETE。可选。默认为增删改都解析。用了此参数但没填任何类型,则三者都不解析。
● 必要参数
○ mysql连接配置
○ --start-file
基础功能验证
根据时间点解析出标准SQL
/bingo2sql -h 127.0.0。1 -u ** -P 30036 -p *** --start-time="2022-08-27 00:15:00" --stop-time "2022-08-27 18:17:00" -d test_xiaozhuang --start-file "mysql-bin.000002" --output ./out
解析出回滚SQL
/bingo2sql -h 192.168.54.234 -u *** -P 30036 -p *** --start-time="2022-08-27 00:15:00" --stop-time "2022-08-27 18:17:00" -d test_xiaozhuang --start-file "mysql-bin.000002" -B --output ./out