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 ...
随机推荐
- css布局笔记(三)圣杯布局,双飞翼布局
圣杯布局和双飞翼布局都是三列布局,两边定宽,中间自适应布局,中间栏要在放在文档流前面以优先渲染. 圣杯布局如下 <!-- 圣杯布局 --> <!DOCTYPE html> &l ...
- Qt-网易云音乐界面实现-6 迷你个人中心实现
这个界面除了麻烦耗时,没有啥技术含量.暂时我也就把它称为迷你个人中心,因为后面还有一个个人中心了. 先看下完成品 左侧是我的,右侧是原生 个人感觉还可以吧,哈哈哈.给我自己奖励一个鸡腿. 看下头文件 ...
- Jmeter+ant+jenkins接口自动化测试 平台搭建(三)
四.报告优化 Jmeter 默认生成报告不是很详细,因此我们需要进行优化.这里我们使用新的报告模板:默认的报告模板是 jmeter-results-detail-report_21.xsl 先上效果图 ...
- 在python脚本中设置环境变量,并运行相关应用
1. 问题 在自动化应用的时候 ,有时候环境变量与运行需要不一致.这时候有两种选择: 改变节点环境变量,使得其和运行需求保持一致: 在自动化脚本中设置环境变量,其范围只在脚本运行环境中有效. 显然,当 ...
- 关于MySql数据库主键及索引的区别
一.什么是索引?索引用来快速地寻找那些具有特定值的记录,所有MySQL索引都以B-树的形式保存.如果没有索引,执行查询时MySQL必须从第一个记录开始扫描整个表的所有记录,直至找到符合要求的记录.表里 ...
- "api-ms-win-crt-runtime-l1-1-0.dll 丢失"怎么办?详细解决步骤
api-ms-win-crt-runtime-l1-1-0.dll 丢失 电脑找不到api-ms-win-crt-runtime-l1-1-0.dll文件解决方法: 问题描述: 1.开机提示" ...
- webpack构建Vue项目引入jQ时发生“'$' is defined but never used”的处理
今天公司需要新建个数据后台,就按照查到的方法构建了Vue框架的项目,引入jQ.bootstrap时,按照在线方法配置,发现 main.js 里的引用jQ一直显示红标,没多想,在按照网上配置完后,npm ...
- How to submit a package to PyPI
How to submit a package to PyPI The other month a coworker of mine wanted to distribute a small wrap ...
- JDK8 metaspace调优
从JDK8开始,永久代(PermGen)的概念被废弃掉了,取而代之的是一个称为Metaspace的存储空间.Metaspace使用的是本地内存,而不是堆内存,也就是说在默认情况下Metaspace的大 ...
- Python更新库
查看系统里过期的python库,可以用pip命令 [root@vnode33 sim-enb-sgi]# pip list #列出所有安装的库 Package Version ------------ ...

