作者:杨彩琳
爱可生华东交付部DBA,主要负责MySQL日常问题处理及DMP产品支持。爱好跳舞,追剧。
本文来源:原创投稿
*爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。
前言
**大家在平时运维过程中应该都了解过或者使用过一些 binlog 解析工具,比如今天要介绍的 my2sql 和 binlog2sql 。**my2sql 是基于 my2fback 、binlog_rollback 工具二次开发而来的(go语言),binlog2sql 是 python 语言开发的 mysql binlog 解析工具,两者都可以通过解析 binlog 文件,生成原始 SQL ,回滚SQL ,去除主键的 insert sql 等,然后实现数据快速闪回,主从切换后的数据补偿等功能。
既然两个工具都可以实现解析 binlog 的功能,那么它们两个之间我们该如何来抉择呢?请跟随小编往下看“my2sql与binlog2sql之间的battle”吧。
主要参数简介【这里只罗列了几个常用的参数,有其他需求的参数可进入链接中查看】
my2sql
| 参数 | 参数解释 |
|---|---|
| -mode | repl:伪装成从库从主库获取 binlog 文件;file:从本地文件系统获取 binlog 文件,默认repl |
| -local-binlog-file 当指定 | 当指定-mode=file参数时,需要指定 -local-binlog-file binlog 文件相对路径或绝对路径 |
| -sql | 要解析的 sql 类型,可选参数 insert ,update ,delete ,默认全部解析 |
| -file-per-table | 为每个表生成一个 sql 文件 |
| -output-dir | 将生成的结果存放到指定目录 |
| -threads | 线程数,默认2个,支持并发 |
| -work-type | 2sql:生成原始 sql ,rollback :生成回滚 sql ,stats:只统计 DML 、事务信息 |
binlog2sql
| 参数 | 参数解释 |
|---|---|
| –stop-never | 持续解析 binlog ,默认 false ,同步至执行命令的最新 binlog 位置 |
| -B,–flashback | 生成回滚 sql ,可解析大文件,不受内存限制,默认 false ,与 stop-never 或 no-primary-key 不能同时添加 |
| –start-file | 起始解析文件,只需文件名,无需全路径 |
| –start-position/–start-pos | 起始解析位置。默认为 start-file 的起始位置。 |
| –stop-file/–end-file | 终止解析文件。默认为 start-file 同一个文件。若解析模式为 stop-never ,此选项失效。 |
| –stop-position/–end-pos | 终止解析位置。可选。默认为 stop-file 的最末位置;若解析模式为 stop-never ,此选项失效。 |
| –sql-type | 只解析指定类型,支持 INSERT ,UPDATE ,DELETE 。多个类型用空格隔开,如–sql-type INSERT DELETE 。默认为增删改都解析。用了此参数但没填任何类型,则三者都不解析。 |
battle 之标准 sql 解析【解析2G大小的同一binlog文件】
环境准备:
## 查看mysql的相关参数设置
mysql> select @@server_id,@@binlog_format,@@binlog_row_image,@@max_binlog_size,@@log_bin_basename;
+-------------+-----------------+--------------------+-------------------+-----------------------------------+
| @@se

本文对比了my2sql与binlog2sql两款MySQL binlog解析工具的性能和功能,通过实测发现my2sql在解析效率上明显优于binlog2sql,并且还具备解析大事务和生成DML统计信息的能力。
最低0.47元/天 解锁文章

923

被折叠的 条评论
为什么被折叠?



