admin管理员组文章数量:1037775
[MYSQL] 几款免费的mysql binlog回滚工具的使用比较
导读
在mysql日常运维中, 难免遇到需要回滚binlog的时候, 市面上能回滚binlog的工具还挺多的, 但都各种小问题, 今天我就来简单测评一下. 从使用难易度, 兼容性(主要测试5.7, 8.0, 8.4), 流行度, 最近一次维护时间等方面进行综合评价.
回滚难度大的时候, 就备份+日志回放吧. 也可以配置延迟从库.
测试环境说明(均开启gtid):
OS: centos 7.9
mysql 5.7.38
mysql 8.0.28
mysql 8.4.0
测试SQL参考如下:
代码语言:sql复制-- 数据准备
create table db1.t20250313_test_binlog(id int, name varchar(200), update_time datetime);
insert into db1.t20250313_test_binlog values(1, 'ddcw', now());
insert into db1.t20250313_test_binlog values(2, '', now());
flush logs;
begin;
delete from db1.t20250313_test_binlog where id=1;
commit;
测试数据仅供参考, 实际使用请以自己情况为准. 5.7和8.0是mysql的主流版本, 8.4是LTS的.
这里测试的均为能在互联网上免费下载的.
这里只进行简单的测试, 不会测试复杂事务, 复杂数据类型等情况.
binlog2sql
第一款上场的是 binlog2sql, 这款工具在业内算是很出名的了, 该工具使用python开发的, 是基于python-mysql-replication开发的一款能解析Binlog生成回滚SQL语句的工具.
5.7 环境测试
代码语言:shell复制mysql -h127.0.0.1 -P3308 -uroot -p123456 -e 'select @@version'
python binlog2sql.py --flashback -h127.0.0.1 -P3308 -uroot -p123456 -ddb1 --start-file='m3308.001408'
8.0 环境测试
8.4 环境测试
8.4环境移除了show master status
, 现在是使用show binary log status;
来查看位点信息了. 所以会遇到如下报错.
我们稍微修正下代码再来测试下. 又遇到了pymysqlreplication的编码问题. 这个问题我们就不继续修复了.
评价
分类 | 得分 | 说明 |
---|---|---|
流行度 | 5星 | github上start数量为3.4K, 足见其流行度 |
是否易于使用 | 4星 | 未提供二进制包,使用时得配置环境或者提前编译. |
兼容性 | 3星 | 不支持mysql8.4 |
维护频率 | 1星 | 最后一次是7年前维护了 |
是否支持离线使用 | 1星 | 不支持离线使用 |
myflash
MyFlash是由美团点评公司技术工程部开发维护的一个回滚DML操作的工具. 该工具通过解析v4版本的binlog,完成回滚操作.
5.7 环境测试
代码语言:shell复制./flashback --binlogFileNames=/data/mysql_3308/mysqllog/binlog/m3308.001408 --outBinlogFileNameBase=mysql57
mysqlbinlog -vvv mysql57.flashback
8.0 环境测试
8.4 环境测试
评价
分类 | 得分 | 说明 |
---|---|---|
流行度 | 5星 | github上start数量为1.2K, 足见其流行度 |
是否易于使用 | 4星 | 虽然提供了二进制包, 但是只是生成binlog文件, 还需要结合mysqlbinlog来使用 |
兼容性 | 5星 | 连mysql8.4都支持了 |
维护频率 | 3星 | 最后一次维护虽然是5年前了, 但问题相对少很多 |
是否支持离线使用 | 5星 | 支持离线使用 |
my2sql
my2sql是go版MySQL binlog解析工具.基于my2fback、binlog_rollback工具二次开发而来.
5.7 环境测试
8.0 环境测试
8.4 环境测试
评价
分类 | 得分 | 说明 |
---|---|---|
流行度 | 4星 | github上start数量为700+ |
是否易于使用 | 3星 | 虽然提供了二进制包, 但参数过于复杂 |
兼容性 | 5星 | 支持范围挺广的 |
维护频率 | 4星 | 最后一次维护虽然是3年前了 |
是否支持离线使用 | 1星 | 不支持离线使用 |
mariadb-binlog
mariadb的mysqlbinlog是支持回滚binlog的. 使用的时候加个 --flashback
即可
5.7 环境测试
代码语言:shell复制./mariadb-binlog /data/mysql_3308/mysqllog/binlog/m3308.001408 -vvv --flashback
8.0 环境测试
8.4 环境测试
评价
上面没有做完整的验证, 实际上还得考虑写入数据库的场景. (得去掉gtid,check_constraint_checks之类的)
分类 | 得分 | 说明 |
---|---|---|
流行度 | 5星 | 这可是mariadb啊 |
是否易于使用 | 5星 | 回滚只需要加个--flashback即可 |
兼容性 | 3星 | 虽然支持mariadb和mysql, 但在解析mysql时,会还是有些小问题. |
维护频率 | 5星 | 官方一直在更新 |
是否支持离线使用 | 5星 | 支持离线使用 |
pymysqlbinlog
最后来个私货:pymysqlbinlog 相当于给mysqlbinlog加个flashback功能, 但流行度很低, 未知问题挺多的. 对binlog结构感兴趣的,可以选择此工具二次开发.
总结
上述几款工具各有优缺点. 汇总如下:
工具 | 优点 | 缺点 |
---|---|---|
binlog2sql | 使用广泛 | 不支持mysql8.4,且长期未维护了 |
myflash | 兼容性好,支持离线解析 | 无法一步到位,得搭配mysqlbinlog使用 |
my2sql | 兼容性好 | 不支持离线使用,且参数过于复杂 |
mariadb-binlog | 官方支持的能回滚Binlog的工具 | 解析的mysql的binlog无法直接回放到数据库 |
pymysqlbinlog | 未知问题多,无相关案例 | 纯python编写,无依赖 |
基于python-mysql-replication二次开发的解析binlog的工具市面上还有很多的.
综合来说: 推荐使用myflash或者my2sql
上述评价为个人观点, 仅作参考. 实际使用请根据自己情况来.
参考:
[MYSQL] 几款免费的mysql binlog回滚工具的使用比较
导读
在mysql日常运维中, 难免遇到需要回滚binlog的时候, 市面上能回滚binlog的工具还挺多的, 但都各种小问题, 今天我就来简单测评一下. 从使用难易度, 兼容性(主要测试5.7, 8.0, 8.4), 流行度, 最近一次维护时间等方面进行综合评价.
回滚难度大的时候, 就备份+日志回放吧. 也可以配置延迟从库.
测试环境说明(均开启gtid):
OS: centos 7.9
mysql 5.7.38
mysql 8.0.28
mysql 8.4.0
测试SQL参考如下:
代码语言:sql复制-- 数据准备
create table db1.t20250313_test_binlog(id int, name varchar(200), update_time datetime);
insert into db1.t20250313_test_binlog values(1, 'ddcw', now());
insert into db1.t20250313_test_binlog values(2, '', now());
flush logs;
begin;
delete from db1.t20250313_test_binlog where id=1;
commit;
测试数据仅供参考, 实际使用请以自己情况为准. 5.7和8.0是mysql的主流版本, 8.4是LTS的.
这里测试的均为能在互联网上免费下载的.
这里只进行简单的测试, 不会测试复杂事务, 复杂数据类型等情况.
binlog2sql
第一款上场的是 binlog2sql, 这款工具在业内算是很出名的了, 该工具使用python开发的, 是基于python-mysql-replication开发的一款能解析Binlog生成回滚SQL语句的工具.
5.7 环境测试
代码语言:shell复制mysql -h127.0.0.1 -P3308 -uroot -p123456 -e 'select @@version'
python binlog2sql.py --flashback -h127.0.0.1 -P3308 -uroot -p123456 -ddb1 --start-file='m3308.001408'
8.0 环境测试
8.4 环境测试
8.4环境移除了show master status
, 现在是使用show binary log status;
来查看位点信息了. 所以会遇到如下报错.
我们稍微修正下代码再来测试下. 又遇到了pymysqlreplication的编码问题. 这个问题我们就不继续修复了.
评价
分类 | 得分 | 说明 |
---|---|---|
流行度 | 5星 | github上start数量为3.4K, 足见其流行度 |
是否易于使用 | 4星 | 未提供二进制包,使用时得配置环境或者提前编译. |
兼容性 | 3星 | 不支持mysql8.4 |
维护频率 | 1星 | 最后一次是7年前维护了 |
是否支持离线使用 | 1星 | 不支持离线使用 |
myflash
MyFlash是由美团点评公司技术工程部开发维护的一个回滚DML操作的工具. 该工具通过解析v4版本的binlog,完成回滚操作.
5.7 环境测试
代码语言:shell复制./flashback --binlogFileNames=/data/mysql_3308/mysqllog/binlog/m3308.001408 --outBinlogFileNameBase=mysql57
mysqlbinlog -vvv mysql57.flashback
8.0 环境测试
8.4 环境测试
评价
分类 | 得分 | 说明 |
---|---|---|
流行度 | 5星 | github上start数量为1.2K, 足见其流行度 |
是否易于使用 | 4星 | 虽然提供了二进制包, 但是只是生成binlog文件, 还需要结合mysqlbinlog来使用 |
兼容性 | 5星 | 连mysql8.4都支持了 |
维护频率 | 3星 | 最后一次维护虽然是5年前了, 但问题相对少很多 |
是否支持离线使用 | 5星 | 支持离线使用 |
my2sql
my2sql是go版MySQL binlog解析工具.基于my2fback、binlog_rollback工具二次开发而来.
5.7 环境测试
8.0 环境测试
8.4 环境测试
评价
分类 | 得分 | 说明 |
---|---|---|
流行度 | 4星 | github上start数量为700+ |
是否易于使用 | 3星 | 虽然提供了二进制包, 但参数过于复杂 |
兼容性 | 5星 | 支持范围挺广的 |
维护频率 | 4星 | 最后一次维护虽然是3年前了 |
是否支持离线使用 | 1星 | 不支持离线使用 |
mariadb-binlog
mariadb的mysqlbinlog是支持回滚binlog的. 使用的时候加个 --flashback
即可
5.7 环境测试
代码语言:shell复制./mariadb-binlog /data/mysql_3308/mysqllog/binlog/m3308.001408 -vvv --flashback
8.0 环境测试
8.4 环境测试
评价
上面没有做完整的验证, 实际上还得考虑写入数据库的场景. (得去掉gtid,check_constraint_checks之类的)
分类 | 得分 | 说明 |
---|---|---|
流行度 | 5星 | 这可是mariadb啊 |
是否易于使用 | 5星 | 回滚只需要加个--flashback即可 |
兼容性 | 3星 | 虽然支持mariadb和mysql, 但在解析mysql时,会还是有些小问题. |
维护频率 | 5星 | 官方一直在更新 |
是否支持离线使用 | 5星 | 支持离线使用 |
pymysqlbinlog
最后来个私货:pymysqlbinlog 相当于给mysqlbinlog加个flashback功能, 但流行度很低, 未知问题挺多的. 对binlog结构感兴趣的,可以选择此工具二次开发.
总结
上述几款工具各有优缺点. 汇总如下:
工具 | 优点 | 缺点 |
---|---|---|
binlog2sql | 使用广泛 | 不支持mysql8.4,且长期未维护了 |
myflash | 兼容性好,支持离线解析 | 无法一步到位,得搭配mysqlbinlog使用 |
my2sql | 兼容性好 | 不支持离线使用,且参数过于复杂 |
mariadb-binlog | 官方支持的能回滚Binlog的工具 | 解析的mysql的binlog无法直接回放到数据库 |
pymysqlbinlog | 未知问题多,无相关案例 | 纯python编写,无依赖 |
基于python-mysql-replication二次开发的解析binlog的工具市面上还有很多的.
综合来说: 推荐使用myflash或者my2sql
上述评价为个人观点, 仅作参考. 实际使用请根据自己情况来.
参考:
本文标签: MYSQL 几款免费的mysql binlog回滚工具的使用比较
版权声明:本文标题:[MYSQL] 几款免费的mysql binlog回滚工具的使用比较 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://it.en369.cn/jiaocheng/1748309540a2283481.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论