工具下载地址binlog2sql
他这个工具支持 linux Mac 也能安装 只要有python 环境都能运行
安装以及配置
binlog2sql
从MySQL binlog解析出你要的SQL。根据不同选项,你可以得到原始SQL、回滚SQL、去除主键的INSERT SQL等。
用途
- 数据快速回滚(闪回)
- 主从切换后新master丢数据的修复
- 从binlog生成标准SQL,带来的衍生功能
项目状态
正常维护。应用于部分公司线上环境。
- 已测试环境
- Python 2.7, 3.4+
- MySQL 5.6, 5.7
安装
git clone https://github.com/danfengcao/binlog2sql.git && cd binlog2sql
#如果使用的是python3 建议直接使用pip3 进行安装, 执行前请先修改 txt文件内容
pip3 install -r requirements.txt
修改 requirements.txt
文件内容为:
#版本一定需要是0.9.3 否则脚本无法使用
PyMySQL==0.9.3
wheel==0.29.0
mysql-replication==0.21
此处修改很重要,一定要调整,安装之后我们就正常了
MySQL server必须设置以下参数:
[mysqld]
#server_id 是唯一的
server_id = 1
log_bin = mysql-bin
max_binlog_size = 256M
# 这个地方一定要设置为row 设置为mixed 此工具无法执行rollback
binlog_format = row
binlog_row_image = full
binlog_expire_logs_seconds=43200
log_bin_index=/usr/local/var/mysql/mysql-bin.index
datadir=/usr/local/var/mysql
binlog-ignore-db = information_schema
binlog-ignore-db = mysql
binlog-ignore-db = sys
binlog-ignore-db = performance_schema
log_error = /usr/local/var/mysql/mysql-error.log
重启mysql brew service stop mysql && brew service start mysql
如果启动失败,查看 mysql-error.log
查询binlog sql 内容
如果不知道文件在哪,请在 mysql 下执行
show master logs
python3 binlog2sql.py -h127.0.0.1 -P3306 -uroot -p123456 -d local_test -taccount --start-file='mysql-bin.000001'
回滚日志方式
具体使用请参考下载地址:
# -B 恢复 等价于 参数 --flashback
python3 binlog2sql.py -h127.0.0.1 -P3306 -uroot -p123456 -d local_test -taccount --start-file='mysql-bin.000001' -B
#等价下面
python3 binlog2sql.py -h127.0.0.1 -P3306 -uroot -p123456 -d local_test -taccount --start-file='mysql-bin.000001' --flashback
以上是在使用这个工具遇到的两个问题,再次记录一下,帮助排坑