项目简介
本项目是基于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. 应用案例
误删整张表数据,需要紧急回滚
- 登录MySQL,查看当前的binlog文件:
bash mysql> show master status;
- 根据误操作时间过滤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'
- 生成回滚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
- 执行回滚SQL:
bash mysql -h127.0.0.1 -P3306 -uadmin -p'admin' < rollback.sql
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】