• 数据快速回滚(闪回)
  • 可以配合延迟同步方案

使用 binlog2sql

安装

git clone https://github.com/danfengcao/binlog2sql.git && cd binlog2sql pip install -r requirements.txt

使用

MySQL server必须设置以下参数:

  1. [mysqld]
  2. server_id = 1
  3. log_bin = /var/log/mysql/mysql-bin.log
  4. max_binlog_size = 1G
  5. binlog_format = row
  6. binlog_row_image = full

user需要的最小权限集合:

  1. select, super/replication client, replication slave
  2. 建议授权
  3. 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

对 sql 进行清洗

  • 将上面恢复出来的 sql 进行清洗
    • 剔除创建表的语句
    • 剔除误删除的语句

恢复数据

  • 运行清洗后的 sql 进行对节点进行恢复