一、工具介绍
my2sql是go版MySQL binlog解析工具,通过解析MySQL binlog ,可以生成原始SQL、回滚SQL、去除主键的INSERT SQL等,也可以生成DML统计信息。类似工具有binlog2sql、MyFlash、my2fback等,本工具基于my2fback、binlog_rollback工具二次开发而来。
1.1 工具对比
binlog2sql:Python 编写,用于生成回滚/前滚 SQL 进行数据恢复/补偿
MyFlash:C 语言编写,用于生成反向 binlog 文件(二进制)进行数据恢复
my2sql:Go 语言编写,除了闪回,还提供了前滚和事务分析的功能
1.2 用途
数据快速回滚(闪回)
主从切换后新master丢数据的修复
从binlog生成标准SQL,带来的衍生功能
生成DML统计信息,可以找到哪些表更新的比较频繁
IO高TPS高, 查出哪些表在频繁更新
找出某个时间点数据库是否有大事务或者长事务
主从延迟,分析主库执行的SQL语句
除了支持常规数据类型,对大部分工具不支持的数据类型做了支持,比如json、blob、text、emoji等数据类型sql生成
1.3 限制
使用回滚/闪回功能时,binlog格式必须为row,且binlog_row_image=full, DML统计以及大事务分析不受影响
只能回滚DML, 不能回滚DDL
支持指定-tl时区来解释binlog中time/datetime字段的内容。开始时间-start-datetime与结束时间-stop-datetime也会使用此指定的时区, 但注意此开始与结束时间针对的是binlog event header中保存的unix timestamp。结果中的额外的datetime时间信息都是binlog event header中的unix timestamp
此工具是伪装成从库拉取binlog,需要连接数据库的用户有SELECT, REPLICATION SLAVE, REPLICATION CLIENT权限
MySQL8.0版本需要在配置文件中加入default_authentication_plugin =mysql_native_password,用户密码认证必须是mysql_native_password才能解析
1.4 性能对比
二、工具使用
2.1 参数说明
-U
优先使用unique key作为where条件,默认false
-add-extraInfo
是否把database/table/datetime/binlogposition…信息以注释的方式加入生成的每条sql前,默认false
datetime=2020-07-16_10:44:09 database=orchestrator table=cluster_domain_name binlog=mysql-bin.011519 startpos=15552 stoppos=15773
-big-trx-row-limit n
找出满足n条sql的事务,默认500条
-databases 、 -tables
库及表条件过滤, 以逗号分隔
-sql
要解析的sql类型,可选参数insert、update、delete,默认全部解析
-doNotAddPrifixDb
默认生成insert into db1.tb1 (x1, x1) values (y1, y1)类sql,也可以生成不带库名的sql
-file-per-table
为每个表生成一个sql文件
-full-columns
生成的sql是否带全列信息,默认false
-ignorePrimaryKeyForInsert
生成的insert语句是否去掉主键,默认false
-output-dir
将生成的结果存放到制定目录
-output-toScreen
将生成的结果打印到屏幕,默认写到文件
-threads
线程数,默认8个
-work-type
2sql:生成原始sql,rollback:生成回滚sql,stats:只统计DML、事务信息
2.2 使用案例
解析标准SQL
[root@zijie releases]# ./my2sql -user root -password 970125 -work-type 2sql -start-file /data/mysql/binlog/binlog.000008 -start-datetime "2021-03-01 00:00:00" -stop-datetime "2021-04-01 00:00:00" -output-dir ./
解析回滚SQL
统计DML以及大事务
统计各个表的DML操作数量,统计一个事务大于500条、时间大于300秒的事务
从某一位置解析出标准SQL,并且持续打印到屏幕
------------END-----------
领取专属 10元无门槛券
私享最新 技术干货