MyFlash回滚DML操作

MyFlash

1 安装

#限制
binlog格式必须为row,且binlog_row_image=full
仅支持5.6与5.7 (自测8.0的binlog也可以部分解析)
`只能回滚DML(增、删、改)`

binlog闪回工具有binlog2sql、myflash
1、用binlog2sql恢复dml操作,但需要伪装slave读取binlog读取系统表等操作,恢复速度比较慢

2、美团技术团队开发了myflash工具,这个工具直接对binlog文件内容进行解析反转,因此速度较快
(可离线)

1.该工具推荐用户在下载源码之后,进行动态编译链接安装
下载链接:https://github.com/Meituan-Dianping/MyFlash
2.动态编译链接,解压,切换到目录下
依赖:yum install -y glib2-devel
gcc -w  `pkg-config --cflags --libs glib-2.0` source/binlogParseGlib.c  -o binary/flashback

./flashback --help

2 使用

# cd  MyFlash-master/binary/
1.
有事务号:使用--include-gtids 

./flashback --binlogFileNames=mysql-bin.000003 --databaseNames=portal-user --tableNames=employee_biz --sqlTypes='delete,insert,update' --include-gtids='725a2882-e2c1-11eb-8683-0050568a3d63:1-211'

`支持:写一个类型
--sqlTypes='delete,insert,update'  

2.
有position,如at 7211
./flashback --binlogFileNames=mysql-bin.000003 --databaseNames=portal-user --tableNames=employee_biz --sqlTypes='delete,insert,update' --start-position=7211

3.
默认生成binlog_output_base.flashback文件
验证文件内容:
mysqlbinlog -vv binlog_output_base.flashback >>delete.txt

4.
`需修改position或是事务号的过滤条件
# 原始binlog操作统计
mysqlbinlog --no-defaults --base64-output=decode-rows -vv  mysql-bin.000003 --include-gtids='725a2882-e2c1-11eb-8683-0050568a3d63:1-211' | awk '/###/ {if($0~/UPDATE|INSERT|DELETE/)count[$2" "$NF]++}END{for(i in count) print i,"\t",count[i]}' | column -t | sort -k2nr

5.
# 回滚binlog操作统计
mysqlbinlog --no-defaults --base64-output=decode-rows -vv binlog_output_base.flashback | awk '/###/ {if($0~/UPDATE|INSERT|DELETE/)count[$2" "$NF]++}END{for(i in count) print i,"\t",count[i]}' | column -t | sort -k2nr

6.
#应用回滚的binlog文件
mysqlbinlog -vv binlog_output_base.flashback --skip-gtids|mysql -uroot -p

7.
#修复完主从不一致,待主从无延迟后,对比相应的表,确保值一致
checksum table tablename;

3 参数说明

1.start-position
指定回滚开始的位置,如不指定则从文件的开始处回滚

2.stop-position
指定回滚结束的位置,如不指定则回滚到文件结尾


3.include-gtids
指定需要回滚的gtid,支持gtid的单个和范围两种形式。

4.exclude-gtids
指定不需要回滚的gtid,用法同include-gtids

5.sqlTypes
指定需要回滚的sql类型。目前支持的过滤类型是INSERT, UPDATE ,DELETE。多个类型可以用“,”隔开

6.maxSplitSize
一旦指定该参数,对文件进行固定尺寸的分割(单位为M)。防止单次应用的binlog尺寸过大。指定一个文件多少兆。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值