- 数据快速回滚(闪回)
- 可以配合延迟同步方案
使用 binlog2sql
安装
git clone https://github.com/danfengcao/binlog2sql.git && cd binlog2sql pip install -r requirements.txt
使用
MySQL server必须设置以下参数:
[mysqld]
server_id = 1
log_bin = /var/log/mysql/mysql-bin.log
max_binlog_size = 1G
binlog_format = row
binlog_row_image = full
user需要的最小权限集合:
select, super/replication client, replication slave
建议授权
GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO
权限说明
- select:需要读取server端information_schema.COLUMNS表,获取表结构的元信息,拼接成可视化的sql语句
- super/replication client:两个权限都可以,需要执行’SHOW MASTER STATUS’, 获取server端的binlog列表
- replication slave:通过BINLOG_DUMP协议获取binlog内容的权限
其他见 https://github.com/danfengcao/binlog2sql
闪回
准备工作
- 停止 db 的读写操作,避免还原覆盖新数据
- 热备份数据库,保证万无一失
恢复 binlog 中的 sql
python binlog2sql.py -h127.0.0.1 -P3306 -uadmin -p’admin’ \ -dtest \ -t t_user \ —start-file=’mysql-bin.000002’ > /home/t_user.sql
-d
指定逻辑库-t
指定逻辑表--start-file
指定读取的 binlog 日志- 其他见 https://github.com/danfengcao/binlog2sql
对 sql 进行清洗
- 将上面恢复出来的 sql 进行清洗
- 剔除创建表的语句
- 剔除误删除的语句
恢复数据
- 运行清洗后的 sql 进行对节点进行恢复