简介: MyFlash 是由美团点评公司技术工程部开发维护的一个回滚 DML 操作的工具. 该工具通过解析 v4 版本的 binlog, 完成回滚操作. 相对已有的回滚工具, 其增加了更多的过滤选项, 让回滚更加容易.
安装:
- git clone https://github.com/Meituan-Dianping/MyFlash.git
- cd MyFlash
- gcc -w
pkg-config --cflags --libs glib-2.0
- source/binlogParseGlib.c -o binary/flashback
- cd binary
./flashback --help -- 查看帮助
使用:
下面的这些参数是可以任意组合的.
* 1.databaseNames
指定需要回滚的数据库名. 多个数据库可以用 "," 隔开. 如果不指定该参数, 相当于指定了所有数据库.
2.tableNames
指定需要回滚的表名. 多个表可以用 "," 隔开. 如果不指定该参数, 相当于指定了所有表.
3.start-position
指定回滚开始的位置. 如不指定, 从文件的开始处回滚. 请指定正确的有效的位置, 否则无法回滚
4.stop-position
指定回滚结束的位置. 如不指定, 回滚到文件结尾. 请指定正确的有效的位置, 否则无法回滚
5.start-datetime
指定回滚的开始时间. 注意格式必须是 %Y-%m-%d %H:%M:%S. 如不指定, 则不限定时间
6.stop-datetime
指定回滚的结束时间. 注意格式必须是 %Y-%m-%d %H:%M:%S. 如不指定, 则不限定时间
7.sqlTypes
指定需要回滚的 sql 类型. 目前支持的过滤类型是 INSERT, UPDATE ,DELETE. 多个类型可以用 "," 隔开.
8.maxSplitSize
一旦指定该参数, 对文件进行固定尺寸的分割 (单位为 M), 过滤条件有效, 但不进行回滚操作. 该参数主要用来将大的 binlog 文件切割, 防止单次应用的 binlog 尺寸过大, 对线上造成压力
9.binlogFileNames
指定需要回滚的 binlog 文件, 目前只支持单个文件, 后续会增加多个文件支持
10.outBinlogFileNameBase
指定输出的 binlog 文件前缀, 如不指定, 则默认为 binlog_output_base.flashback
11.logLevel
仅供开发者使用, 默认级别为 error 级别. 在生产环境中不要修改这个级别, 否则输出过多
12.include-gtids
指定需要回滚的 gtid, 支持 gtid 的单个和范围两种形式.
13.exclude-gtids
指定不需要回滚的 gtid, 用法同 include-gtids
测试:
/root/test/MyFlash/binary/flashback --binlogFileNames=/mysqllog/mysql-bin.000011 --start-datetime="2018-01-04 13:50:00" --stop-datetime="2018-01-04 14:35:00" --databaseNames=test --tableNames=test_tb --sqlTypes='UPDATE','DELETE' --outBinlogFileNameBase=test_tb
mysqlbinlog --no-defaults --base64-output=decode-rows -vv binlog_output_base.flashback -- 查看回滚 sql
mysqlbinlog --no-defaults binlog_output_base.flashback |mysql -uroot -pyourpass -- 执行恢复
可以在. bash_profile 增加
alias flashback="/root/test/MyFlash/binary/flashback"
以后即可这样使用
flashback --binlogFileNames=/mysqllog/mysql-bin.000011 --start-datetime="2018-01-04 13:50:00" --stop-datetime="2018-01-04 14:35:00" --databaseNames=test --tableNames=test_tb --sqlTypes='UPDATE','DELETE' --outBinlogFileNameBase=test_tb
来源: http://www.linuxidc.com/Linux/2018-05/152243.htm