littlebot
Published on 2025-04-02 / 4 Visits
0

【源码】基于Python的MySQL Binlog解析工具

项目简介

本项目是基于Python开发的工具,用于解析MySQL的二进制日志(binlog)并生成相应的SQL语句。适用于数据快速回滚、主从切换后新master丢数据的修复以及从binlog生成标准SQL等场景。

项目的主要特性和功能

  • 数据回滚(闪回):支持快速回滚误操作的数据。
  • 主从切换修复:能在新master丢失数据时快速修复数据。
  • 生成标准SQL:从binlog中解析出标准SQL语句,便于进一步处理和分析。
  • 时间范围过滤:支持根据时间范围过滤binlog事件,精确控制解析范围。
  • 回滚模式:支持生成回滚SQL,便于数据恢复。
  • 数据库和表过滤:支持只解析特定数据库或表的binlog事件。

安装使用步骤

1. 安装依赖

确保已安装Python(2.7或3.4+)和MySQL(5.6或5.7),然后执行以下命令安装项目依赖: bash cd binlog2sql pip install -r requirements.txt

2. 配置MySQL

确保MySQL服务器已配置以下参数: ini [mysqld] server_id = 1 log_bin = /var/log/mysql/mysql-bin.log max_binlog_size = 1G binlog_format = row binlog_row_image = full 同时,确保用户具有以下最小权限集合: sql GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'your_user'@'your_host';

3. 使用工具

解析出标准SQL

bash python binlog2sql.py -h127.0.0.1 -P3306 -uadmin -p'admin' -dtest -t test3 test4 --start-file='mysql-bin.000002'

解析出回滚SQL

bash python binlog2sql.py --flashback -h127.0.0.1 -P3306 -uadmin -p'admin' -dtest -ttest3 --start-file='mysql-bin.000002' --start-position=763 --stop-position=1147

4. 应用案例

误删整张表数据,需要紧急回滚

  1. 登录MySQL,查看当前的binlog文件: bash mysql> show master status;
  2. 根据误操作时间过滤binlog事件: bash python binlog2sql.py -h127.0.0.1 -P3306 -uadmin -p'admin' -dtest -ttbl --start-file='mysql-bin.000052' --start-datetime='2016-12-13 20:25:00' --stop-datetime='2016-12-13 20:30:00'
  3. 生成回滚SQL并检查: bash python binlog2sql.py -h127.0.0.1 -P3306 -uadmin -p'admin' -dtest -ttbl --start-file='mysql-bin.000052' --start-position=3346 --stop-position=3556 -B > rollback.sql
  4. 执行回滚SQL: bash mysql -h127.0.0.1 -P3306 -uadmin -p'admin' < rollback.sql

下载地址

点击下载 【提取码: 4003】【解压密码: www.makuang.net】