mysql 闪回_Mysql数据闪回操作备忘

准备工作

更新mysql客户端到5.7版本

shell> wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm

shell> yum -y install mysql57-community-release-el7-11.noarch.rpm

shell> yum -y install mysql-community-server

# 检查mysqlbinlog版本是否3.4

shell> mysqlbinlog --version

安装MyFlash

# 下载

shell> git clone https://github.com/Meituan-Dianping/MyFlash.git

安装

shell> cd MyFlash

shell> gcc -w `pkg-config --cflags --libs glib-2.0` source/binlogParseGlib.c -o binary/flashback

# 如果报No package 'glib-2.0' found,先安装glib依赖

shell> yum install libgnomeui-devel

安装binlog2sql

shell> git clone https://github.com/danfengcao/binlog2sql.git

shell> cd binlog2sql

shell> pip install -r requirements.txt

闪回操作

注意:利用MyFlash回滚阿里云RDS备份恢复页面中下载到ECS本地的binlog(RDS下载的binlog无法解析)

# 下载阿里云RDS控制台备份恢复页面中相关binlog

# 下载地址需要加'' 用-O(大写)指定输出文件名

shell> wget -c 'dowload url' -O mysql-bin.xxxx

# 生成回滚binlog

shell> binary/flashback --binlogFileNames=mysql-bin.xxxx --start-datetime="2020-01-01 12:00:00" --stop-datetime="2020-01-01 13:00:00" --databaseNames=xxx --tableNames=xxx --sqlTypes='UPDATE','DELETE' --outBinlogFileNameBase=xxx

# 查看回滚sql

shell> mysqlbinlog --no-defaults --base64-output=decode-rows -vv xxx.flashback

# 利用mysqlbinlog回滚

shell> mysqlbinlog --no-defaults xxx.flashback |mysql -hxxx -uxxx -p

利用binlog2sql回滚最新binlog

# 找到最新binlog

mysql> show binary logs;

# 或者手动生成最新binlog

mysql> flush logs;

# 生成回滚sql -d 指定数据库 -t 指定表 -B 生成回滚sql

shell> python binlog2sql/binlog2sql.py -hxxxx -P3306 -uxxx -p -dxxx -txxx --start-file='mysql-bin.xxxx' --start-datetime='2020-01-01 22:30:00' --stop-datetime='2020-01-01 22:50:00' -B > /tmp/raw.sql

# 人工筛选后执行sql完成回滚

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值