MySQL-binlog2sql闪回工具
1.安装
shell> git clone https://github.com/danfengcao/binlog2sql.git && cd binlog2sql
shell> yum install python3 -y
vim修改requirements.txt中的PyMySQL==0.9.3
shell> pip3 install -r requirements.txt
数据库中创建用户,密码插件必须为mysql_native_password
2.作用:
快速回滚(闪回)数据。
修复主从切换后数据不一致的问题。
解析 binlog 生成标准 SQL 语句带来的衍生功能。
3.参数:
1. MySQL 连接配置选项
-h:指定需要连接的数据库P地址。
-P:指定需要连接的数据库端口。
-u:指定需要连接的数据库中的用户名。
-p:指定-u选项指定的用户的密码。
2. 解析模式选项
-stop-never: 持续同步binlog。可选。不使用此选项,则同步至执行命令时最新的binlog位置。
-K,no-primary-key: 对insert语句去除主键.可选。
-B,--flashback: 生成回滚语句,可解析大文件,不受内存限制,每打印l000行加一句 SLEEP SELECT(1)。可选。与-stop-never或-no-primary-key选项不能同时使用。
3. 解析范围控制选项
--start-file: 起始解析文件。必选。
--start-position/--start-pos: 用于指定--start-file选项指定文件的起始解析位置。可选。 如果不指定,则默认将从--start-file选项指定文件的开头进行解析。
--stop-file-end-file: 末尾解析文件。可选。如果不指定,则将复用--start-file选项指定的文件名。若解析模式为--stop-never,则此选项失效。
--stop-position/-end-pos: stop-file的末尾解析位置。可选。默认为stop-fle的最末位置。若解析模式为--stop-never,则此选项失效。
--start-datetime: 从哪个时间点的binlog开始解析,格式必须为datetime,如'2016-11-11 11:11:11'。可选。默认不过滤。
--stop-datetime: 到哪个时间点的binlog停止解析,格式必须为datetime,如'2016-l1-l1 11:11:11'。可选。默认不过滤。
4. 对象过滤选项
-d, --database 只输出目标数据库的 SQ 语句。可选。默认为空。
-t, --tables 只输出目标表的 SQL 语句。可选。默认为空。
4.举例:
```powershell
1.解析日志事件SQL:
shell> python3 binlog2sql.py -h 10.0.0.53 -P3306 -uroot - p123 -d test -t t1 --start-file='mysql-bin.000004'
2.只解析delete类型操作:
shell> python3 binlog2sql.py -h 10.0.0.51 -P3306 -uroot -p123 -d test -t t1 --start-file='mysql-bin.000003' --sql-type=delete
3.生成指定事件回滚语句:
shell> python3 binlog2sql.py -h 10.0.0.51 -P3306 -uroot - p123 -d test -t t1 --start-file='mysql-bin.000003' --sql-type=delete --start-position=932 --stop-position=1198 -B
shell> python3 binlog2sql.py -h 10.0.0.51 -P3306 -uroot - p123 -d test -t t1 --start-file='mysql-bin.000003' --sql-type=delete --start-position=932 --stop-position=1198 -B>/tmp/flashback.sql
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?