MyFlash闪回恢复数据
使用限制:
、binlog格式必须为row,且binlog_row_image=full。
、仅支持5.6与5.。
、只能回滚DML(增、删、改)。
、mysqlbinlog版本请保持一致。
1、安装
安装依赖。
yum install glib2 glib2-devel gcc git mysql mysql-devel -y
yum groupinstall "Development tools" "Server Platform Development"
下载myflash源码包。
下载地址:https://github.com/Meituan-Dianping/MyFlash/tree/master
编译安装myflash,此处采用静态编译方式。
cd /data/MyFlash-master
gcc -w -g `pkg-config --cflags glib-2.0` source/binlogParseGlib.c -o /data/flashback /usr/lib64/libglib-2.0.so -lrt
参数解析:
/data/MyFlash/source/binlogParseGlib.c:myflash c源码文件位置
/data/flashback:编译完成myflash的可执行文件位置
/usr/lib64/libglib-2.0.so:glib2.0的lib文件位置
pkg-config --cflags glib-2.0:标明使用的glib版本
2、使用帮助
./flashback --help Usage:
flashback [OPTION...] Help Options:
-?, --help Show help options Application Options:
--databaseNames databaseName to apply. if multiple, seperate by comma(,)
#指定需要回滚的数据库名称。多个数据库名称可以使用","隔开,如果不指定该参数,相当于指定所有数据库 --tableNames tableName to apply. if multiple, seperate by comma(,)
#指定需要回滚的表名。多个表可以用","隔开。如果不指定该参数,相当于指定所有表。 --start-position start position
#指定回滚的开始位置。如不指定,从文件的开始处进行回滚。如指定,请指定正确有效的位置,否则无法回滚。 --stop-position stop position
#指定回滚结束的位置。如不指定,回滚到文件结束位置。如指定,请指定正确有效的位置,否则无法回滚。 --start-datetime start time (format %Y-%m-%d %H:%M:%S)
#指定回滚开始的时间。注意格式为:%Y-%m-%d %H:%M:%S。如不指定,则不限定时间。建议使用指定时间方式。 --stop-datetime stop time (format %Y-%m-%d %H:%M:%S)
#指定回滚结束的时间。注意格式为:%Y-%m-%d %H:%M:%S。如不指定,则不限定时间。建议使用指定时间方式。 --sqlTypes sql type to filter . support INSERT, UPDATE ,DELETE. if multiple, seperate by comma(,)
#指定需要回滚的sql类型。目前支持的过滤类型是INSERT, UPDATE ,DELETE。多个类型可以用","隔开。注意过滤类型要大写。 --maxSplitSize max file size after split, the uint is M
#指定该参数,对文件进行固定尺寸的分割(单位为M),过滤条件有效,但不进行回滚操作。该参数主要用来将大的binlog文件切割,防止单次应用的binlog尺寸过大,对线上造成压力 --binlogFileNames binlog files to process. if multiple, seperate by comma(,)
#指定需要回滚的binlog文件,目前只支持单个文件,后续会增加多个文件支持
--outBinlogFileNameBase output binlog file name base
#指定输出的binlog文件前缀,如不指定,则默认为binlog_output_base.flashback --logLevel log level, available option is debug,warning,error
#仅供开发者使用,默认级别为error级别。在生产环境中不要修改这个级别,否则输出过多 --include-gtids gtids to process
#指定需要回滚的gtid,支持gtid的单个和范围两种形式。 --exclude-gtids gtids to skip
#指定不需要回滚的gtid,用法同include-gtids。
3、使用示例
.回滚整个文件
./flashback --binlogFileNames=haha.
mysqlbinlog binlog_output_base.flashback | mysql -h<host> -u<user> -p
.回滚该文件中的所有insert语句
./flashback --sqlTypes='INSERT' --binlogFileNames=haha.
mysqlbinlog binlog_output_base.flashback | mysql -h<host> -u<user> -p
.回滚大文件
回滚:
./flashback --binlogFileNames=haha.000042 切割大文件:
./flashback --maxSplitSize= --binlogFileNames=binlog_output_base.flashback
应用:
mysqlbinlog binlog_output_base.flashback. | mysql -h<host> -u<user> -p
...
mysqlbinlog binlog_output_base.flashback.<N> | mysql -h<host> -u<user> -p
4、测试示例
、进行回滚,首先回滚二进制日志
./flashback --databaseNames='owms-cd' --sqlTypes='DELETE' --binlogFileNames=/data/mysqldata/master-bin. --start-datetime='2017-12-26 11:20:00' --outBinlogFileNameBase=lcs
生成文件如下:
、导入回滚完成的日志
mysqlbinlog lcs.flashback | mysql
注:切分回滚完成的二进制日志
5、检测表sum。
checksum table test ;
检测test表的sum值
MyFlash闪回恢复数据的更多相关文章
- Orcale-利用闪回恢复数据方法
一.delete误删 方法1:如果表结构没有改变,直接闪回整个表,具体步骤: --首先需要表闪回权限,开启行移动功能 alter table 表名 enable row movement; --执行闪 ...
- binlog2sql闪回恢复数据
用途: .数据快速回滚 .从binlog生成标准sql 使用限制: .必须设置binlog_format=ROW .binlog_row_image=full,该参数默认为FULL .恢复用户拥有的最 ...
- 利用MyFlash闪回丢失数据(续)
last night,i've tested flashback by MyFlash tool,but failed,now let's do some other test with ...
- 利用MyFlash闪回丢失数据
MyFlash is an open source tool released by Meituan-Dianping which can be used to flashback MyS ...
- oracle_利用闪回功能恢复数据
方便起见一般:执行如下即可不用往下看: ① 启用行移动功能 alter table tbl_a enable row movement; ② 闪回表数据到某个时间点 flashback table t ...
- Oracle 闪回 找回数据
使用闪回技术,实现基于磁盘上闪回恢复区的自动备份与还原. 一.恢复表对象 1.创建学生表 create table STUDENT ( idno INTEGER, name VARCHAR2(30), ...
- Oracle 闪回 找回数据的实现方法
Oracle 闪回 找回数据的实现方法 闪回技术是Oracle强大数据库备份恢复机制的一部分,在数据库发生逻辑错误的时候,闪回技术能提供快速且最小损失的恢复.这篇文章主要介绍了Oracle 闪回 找回 ...
- Oracle数据库中闪回恢复的详细分析
Oracle9i开始提供闪回查询,以便能在需要的时候查到过去某个时刻的一致性数据,这是通过Undo实现的.这个功能有很大的限制,就是相关事务的undo不能被覆盖,否则就无力回天了.oracle10g大 ...
- 闪回恢复区大小不够。报ORA-19809、ORA-19804
问题: 闪回恢复区大小不够,rman默认备份路径报错.RMAN> backup database;Starting backup at 01-DEC-14using target databas ...
随机推荐
- C#简单的四位纯数字验证码
验证码练手,整型.四位验证码 大体意思就是:四位纯数字验证,只要验证不成功就无限验证 刚开始在纠结怎么让整个过程循环起来,什么循环放到最外层,其实就是一个循环,看来自己的循环练习的还是不够多,不够灵活 ...
- birt 访问频繁报错Cannot create JDBC driver of class '' for connect URL 'null' java.sql.SQLException: No suitable driver
一般birt项目都是部署tomcat启动.这个问题大概率是因为没有配置JNDI数据源的原因. 参考链接: https://www.cnblogs.com/xdp-gacl/p/3951952.html
- Controller - 压力机的设置 - 界面图表分析
一. Controller- 压力机界面的一下设置讲解 2种测试场景的设计和压测策略 二. Controller- 压力机界面的图表分析
- java多线程相关代码
1.创建线程的三种方式 使用Thread package com.wpbxx.test; //1.自定义一个类,继承java.lang包下的Thread类 class MyThread extends ...
- 软件RAID
软件RAID也必须在多磁盘系统中才能实现.实现RAID1最少要拥有两块硬盘,而实现RAID5则最少要拥有三块硬盘.通常情况下,操作系统所在磁盘采用RAID1,而数据所在磁盘采用RAID5. 卷的类 ...
- CentOS 7 Docker基本特性
Docker是一个开源的应用容器引擎,开发人员可以非常容易地打包已经开发好的应用,同时将应用相关的依赖包也打包到这样一个可移植的容器中,然后发布到任意的Linux主机系统上.Docker是基于Linu ...
- Python20 - Day09
python并发编程之多线程理论 1.什么是线程? 进程只是用来把资源集中到一起(进程是一个资源单位,或者说资源集合),而线程才是cpu上的执行单位. 多线程(多个控制线程)的概念是,在一个进程中存在 ...
- 1.centos6.8安装docker
简介环境安装依赖安装步骤1.删除旧版本的docker2.安装docker2.1 yum安装docker2.2 tar安装2.3 在线脚本事实证明以上的安装方式都行不通 参考文档:https://doc ...
- UVALive 7464 Robots(模拟)
7464Robots Write a program to collect data from robots. We are given two sets of robotsX=fX1;:::;Xmg ...
- java代码生成xml 报错:HIERARCHY_REQUEST_ERR: 尝试在不允许的位置插入节点。
document.appendChild(controlElement)好像只能append一个根节点