my2sql是一款开源的binlog日志解析工具,使用go语言开发,它通过解析MySQL binlog ,可以生成标准SQL、回滚SQL、DML统计信息等。类似工具有binlog2sql、MyFlash、my2fback等,本工具基于my2fback、binlog_rollback二次开发而来,解析效率非常高。经测试,mysql7、mysql8都可以使用。
功能
- 数据快速回滚(闪回);
- 生成DML统计信息;
- 找出某个时间点数据库是否有大事务或者长事务;
要求&限制
- 使用回滚/闪回功能时,binlog_format=row,且binlog_row_image=full。另外在mysql8.0 使用回滚/闪回功能时, binlog必须关闭压缩功能(binlog_transaction_compression=OFF);
- my2sql只能回滚DML,不能回滚DDL;
- my2sql访问mysql的账号的密码插件必须为mysql_native_password,且用户权限必须包含select, replication slave, replication client;
my.cnf修改以下参数 [mysqld] binlog_format=row binlog_row_image=full default_authentication_plugin=mysql_native_password binlog_transaction_compression=OFF
复制
再次提示,数据库必须关闭压缩功能,即binlog_transaction_compression=OFF,否则binlog解析获取不到sql语句。
快速部署my2sql工具
方法1 编译好的二进制文件(适用于centos7)
https://www.modb.pro/doc/103586
下载、解压后二进制文件的路径:my2sql-master-centos7/releases/centOS_release_7.x
复制
方法2 go编译
https://github.com/liuhr/my2sql
git clone https://github.com/liuhr/my2sql.git
cd my2sql/
go build .
复制
my2sql参数介绍
-work-type
2sql:生成原始sql,rollback:生成回滚sql,stats:只统计DML、事务信息
-sql
要解析的sql类型,可选参数insert、update、delete,默认全部解析
示例:--sql update delete
-mode
repl: 伪装成从库解析binlog文件,file: 离线解析binlog文件, 默认repl
-local-binlog-file
当指定-mode=file 参数时,需要指定-local-binlog-file binlog文件相对路径或绝对路径,可以连续解析多个binlog文件,只需要指定起始文件名,程序会自动持续解析下个文件
-add-extraInfo
是否把database/table/datetime/binlogposition...信息以注释的方式加入生成的每条sql前,默认false
-big-trx-row-limit n
transaction with affected rows greater or equal to this value is considerated as big transaction
找出满足n条sql的事务,默认500条
-doNotAddPrifixDb
Prefix table name witch database name in sql,ex: insert into db1.tb1 (x1, x1) values (y1, y1)
默认生成insert into db1.tb1 (x1, x1) values (y1, y1)类sql,也可以生成不带库名的sql
-file-per-table
为每个表生成一个sql文件
-full-columns
生成的sql是否带全列信息,默认false
-ignorePrimaryKeyForInsert
生成的insert语句是否去掉主键,默认false
复制
使用my2sql工具解析binglog文件
生成标准SQL
./my2sql -user restore -password 'xxx' -port 3306 \
-host 127.0.0.1 -databases dbtest -tables t1 \
-work-type 2sql -add-extraInfo -full-columns -start-file mysql-bin.000001 \
-start-datetime "2023-05-21 13:50:00" --stop-datetime "2023-05-21 14:00:00" \
-output-dir /tmp/sql_tmpdir/
复制
生成回滚SQL
./my2sql -user restore -password 'xxx' -port 3306 \
-host 127.0.0.1 -databases dbtest -tables t1 \
-work-type rollback -add-extraInfo -full-columns -start-file mysql-bin.000001 \
-start-datetime "2023-05-21 13:50:00" --stop-datetime "2023-05-21 14:00:00" \
-output-dir /tmp/sql_tmpdir/
复制
生成统计信息
./my2sql -user restore -password 'xxx' -port 3306 \
-host 127.0.0.1 -databases dbtest -tables t1 \
-work-type stats -start-file mysql-bin.000001 \
-start-datetime "2023-05-21 13:50:00" --stop-datetime "2023-05-21 14:00:00" \
-output-dir /tmp/sql_tmpdir/
复制
最后修改时间:2023-05-23 12:22:40
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
文章被以下合辑收录
评论

1年前

评论

1年前

评论
相关阅读
MySQL8.0统计信息总结
闫建(Rock Yan)
555次阅读
2025-03-17 16:04:03
MySQL生产实战优化(利用Index skip scan优化性能提升257倍)
chengang
375次阅读
2025-03-17 10:36:40
MySQL数据库当前和历史事务分析
听见风的声音
349次阅读
2025-04-01 08:47:17
墨天轮个人数说知识点合集
JiekeXu
328次阅读
2025-04-01 15:56:03
MySQL 生产实践-Update 二级索引导致的性能问题排查
chengang
319次阅读
2025-03-28 16:28:31
MySQL8.0直方图功能简介
Rock Yan
260次阅读
2025-03-21 15:30:53
MySQL 有没有类似 Oracle 的索引监控功能?
JiekeXu
242次阅读
2025-03-19 23:43:22
云和恩墨杨明翰:安全生产系列之MySQL高危操作
墨天轮编辑部
238次阅读
2025-03-27 16:45:26
openHalo问世,全球首款基于PostgreSQL兼容MySQL协议的国产开源数据库
严少安
227次阅读
2025-04-07 12:14:29
使用Veridata 23c进行异构数据库的数据校验
曹海峰
165次阅读
2025-03-14 13:11:42
TA的专栏
热门文章
mysql报错: The innodb_system data file 'ibdata1' must be writable
2023-05-25 4575浏览
手把手教你写一篇《MySQL数据库巡检报告》
2024-06-14 4246浏览
[Xtrabackup] Found tables with row versions due to INSTANT ADD/DROP columns
2023-05-21 2179浏览
mysql IPv6双栈改造的一些经验和心得
2024-05-29 1783浏览
MGR网络抖动问题分析 - [ERROR] Member was expelled from the group due to network failures, changing member status to ERROR
2023-05-24 1730浏览
目录