binlog分析工具

使用场景

  1. 排查问题获取一段时间内的binlog,颗粒度 表级
  2. 数据闪回操作
  3. dml操作信息统计分析

为什么需要使用第三方工具,原生mysqlbinlog工具不能吗?

  • 原生mysqlbinlog不支持获取表级别binlog
  • 不支持生成回滚语句
  • 获取的binlog可读性差,不利于分析排查问题

my2sql

github:https://github.com/liuhr/my2sql

go版MySQL binlog解析工具,通过解析MySQL binlog ,可以生成:

  • 原始SQL
  • 回滚SQL
  • 去除主键的INSERT SQL等等
  • 从binlog生成标准SQL
  • 也可以生成DML统计信息

总结:用来sql闪回和binlog分析

对比

相对于binlog2sql,速度优势明显

性能对比

img

命令参数

忽略,参考github

基础功能验证

根据时间点解析出标准SQL

#伪装成从库解析binlog
./my2sql  -user root -password xxxx -host 127.0.0.1   -port 3306 -mode repl -work-type 2sql  -start-file mysql-bin.011259  -start-datetime "2020-07-16 10:20:00" -stop-datetime "2020-07-16 11:00:00" -output-dir ./tmpdir
#直接读取binlog文件解析
./my2sql  -user root -password xxxx -host 127.0.0.1   -port 3306 -mode file -local-binlog-file ./mysql-bin.011259  -work-type 2sql  -start-file mysql-bin.011259  -start-datetime "2020-07-16 10:20:00" -stop-datetime "2020-07-16 11:00:00" -output-dir ./tmpdir

在这里插入图片描述

解析出回滚SQL

#伪装成从库解析binlog
./my2sql  -user root -password xxxx -host 127.0.0.1   -port 3306 -mode repl -work-type rollback  -start-file mysql-bin.011259  -start-datetime "2020-07-16 10:20:00" -stop-datetime "2020-07-16 11:00:00" -output-dir ./tmpdir
#直接读取binlog文件解析
./my2sql  -user root -password xxxx -host 127.0.0.1   -port 3306  -mode file -local-binlog-file ./mysql-bin.011259 -work-type rollback  -start-file mysql-bin.011259  -start-datetime "2020-07-16 10:20:00" -stop-datetime "2020-07-16 11:00:00" -output-dir ./tmpdir

在这里插入图片描述

统计时间范围各个表的DML操作数量

统计一个事务大于500条、时间大于300秒的事务

#伪装成从库解析binlog
./my2sql  -user root -password xxxx -host 127.0.0.1   -port 3306  -mode repl -work-type stats  -start-file mysql-bin.011259  -start-datetime "2020-07-16 10:20:00" -stop-datetime "2020-07-16 11:00:00"  -big-trx-row-limit 500 -long-trx-seconds 300   -output-dir ./tmpdir
#直接读取binlog文件解析
./my2sql  -user root -password xxxx -host 127.0.0.1   -port 3306 -mode file -local-binlog-file ./mysql-bin.011259   -work-type stats  -start-file mysql-bin.011259  -start-datetime "2020-07-16 10:20:00" -stop-datetime "2020-07-16 11:00:00"  -big-trx-row-limit 500 -long-trx-seconds 300   -output-dir ./tmpdir

在这里插入图片描述

问题

  1. 分析dml命令计算方式存在问题,不准确
  2. 给出的编译包存在问题,需要修改。

二进制包

修复问题重新编译

mac-arm:

📎my2sql.zip

linux:

📎my2sql.zip

bingo2sql

https://github.com/hanchuanchuan/bingo2sql

go版MySQL binlog解析工具

  • 本地离线解析:指定本地binlog文件和要解析的表结构即可
  • 远程在线解析:指定远程数据库地址,起止时间范围或binlog范围,可指定库/表和操作类型,GTID/线程号等
  • 解析服务API:提供HTTP协议方式的解析接口,支持解析和打包下载

总结:用来sql闪回和binlog获取

对比

相对于binlog2sql,速度优势明显

相对于my2sql,有如下优势

  • 代码可读性更强,可靠性更强
  • 提供api服务
  • 社区更活跃

缺点:

  • 未提供binlog分析能力

命令参数

忽略参考官网

基础功能验证

根据时间点解析出标准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 --star
t-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 --star
t-file "mysql-bin.000002" -B  --output ./out

在这里插入图片描述

总结

推荐使用bingo2sql,并进行源码学习,可尝试二次开发。

且bingo2sql的和goinception是同一作者,实力还是很强的,建议学习。

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我想骑车

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值