• 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
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述

    解析出回滚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
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述

    统计时间范围各个表的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
    • 2
    • 3
    • 4

    在这里插入图片描述

    问题

    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
    
    • 1
    • 2

    在这里插入图片描述

    解析出回滚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
    
    • 1
    • 2

    在这里插入图片描述

    总结

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

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

  • 相关阅读:
    第二十六章CSS3基础
    面试突击84:Spring 有几种事务隔离级别?
    腾讯云4核8G服务器收费贵不贵?
    python3 中调用 C 语言的函数
    JAVA基础知识总结三
    NC54585 小魂和他的数列
    MyBatisPlus(三) 基础Service接口:增删改查
    OFDM系统各种调制阶数的QAM误码率(Symbol Error Rate)与 误比特率(Bit Error Rate)仿真结果
    springboot集成mysql、mybatis-plus、shardingsphere-jdbc实现水平分表
    1995-2020年全国各省二氧化碳排放量面板数据
  • 原文地址:https://blog.csdn.net/qq_43490312/article/details/126580776