摘要:本文主要向大家介绍了Flash基础入门之MySQL 闪回工具MyFlash,通过具体的内容向大家展现,希望对大家学习Flash基础入门有所帮助。
本文主要向大家介绍了Flash基础入门之MySQL 闪回工具MyFlash,通过具体的内容向大家展现,希望对大家学习Flash基础入门有所帮助。
一. 简介
背景:由于运维、开发误操作或是业务bug,我们在操作中时不时会出现误删除数据情况。早期要想恢复数据,只能让业务人员根据线上操作日志,构造误删除的数据,或者DBA使用binlog和备份的方式恢复数据,不管那种,都非常费时费力,而且容易出错。
MyFlash是由美团点评公司技术工程部开发维护的一个回滚DML操作的工具。该工具通过解析v4版本的binlog,完成回滚操作。相对已有的回滚工具,其增加了更多的过滤选项,让回滚更加容易。
二. 恢复工具对比
1.mysqlbinlog工具配合sed、awk。该方式先将binlog解析成类SQL的文本,然后使用sed、awk把类SQL文本转换成真正的SQL。
优点:当SQL中字段类型比较简单时,可以快速生成需要的SQL,且编程门槛也比较低。
缺点:当SQL中字段类型比较复杂时,尤其是字段中的文本包含HTML代码,用awk、sed等工具时,就需要考虑极其复杂的转义等情况,出错概率很大。
2.给数据库源码打patch。该方式扩展了mysqlbinlog的功能,增加Flashback选项。
优点:复用了MySQL Server层中binlog解析等代码,一旦稳定之后,无须关心复杂的字段类型,且效率较高。
缺点:在修改前,需要对MySQL的复制代码结构和细节需要较深的了解。版本比较敏感,在MySQL 5.6上做的patch,基本不能用于MySQL 5.7的回滚操作。升级困难,因为patch的代码是分布在MySQL的各个文件和函数中,一旦MySQL代码改变,特别是复制层的重构,升级的难度不亚于完全重新写一个。
3.使用业界提供的解析binlog的库,然后进行SQL构造,其优秀代表是binlog2sql。
优点:使用业界成熟的库,因此稳定性较好,且上手难度较低。
缺点:效率往往较低,且实现上受制于binlog库提供的功能。
4.MyFlash 特点
无需把binlog解析成文本,再进行转换。
提供原生的基于库、表、SQL类型、位置、时间等多种过滤方式。
支持MySQL多个版本(5.6与5.7)
对于数据库的代码重构不敏感,利于升级。
自主掌控binlog解析,提供尽可能灵活的方式。
三. MyFlash 安装
解压
unzip MyFlash-master.zip
动态编译
gcc -w pkg-config --cflags --libs glib-2.0 source/binlogParseGlib.c -o binary/flashback
四. MyFlash 使用
4.1. 参数
全部参数请通过--help查看,以下指列举部分常用参数。
databaseNames
指定需要回滚的数据库名。多个数据库可以用“,”隔开。如果不指定该参数,相当于指定了所有数据库。
tableNames
指定需要回滚的表名。多个表可以用“,”隔开。如果不指定该参数,相当于指定了所有表。
start-datetime
指定回滚的开始时间。注意格式必须是 %Y-%m-%d %H:%M:%S。 如不指定,则不限定时间
stop-datetime
指定回滚的结束时间。注意格式必须是 %Y-%m-%d %H:%M:%S。 如不指定,则不限定时间
sqlTypes
指定需要回滚的sql类型。目前支持的过滤类型是INSERT, UPDATE ,DELETE。多个类型可以用“,”隔开。
binlogFileNames
指定需要回滚的binlog文件,目前只支持单个文件,后续会增加多个文件支持。
outBinlogFileNameBase
指定输出的binlog文件前缀,如不指定,则默认为binlog_output_base.flashback。
4.2. 示例
回滚bin.000009中,所有与Messages_Center 表上delete操作有关的SQL,时间为‘2018-04-17 15:00:00‘ 之后。
1.过滤并重新生成回滚二进制日志
./flashback --databaseNames stdzwfw9release --tableNames Messages_Center --start-datetime 2018-04-17 15:00:00 --sqlTypes DELETE --binlogFileName bin.000009
2.应用生成的回滚日志
mysqlbinlog binlog_output_base.flashback | mysql -h
五. 个人总结
MySQL下的误删除恢复经常会碰到,之前我们的普遍做法都是通过mysqlbinlog flashback参数来生成回滚数据,但是有些时候会比较麻烦,因为无法只选择某一类操作,所以会导致恢复的数据会涵盖其他类型的操作,需要人工再次过滤,比较费时费力。
MyFlash的参数可以选择dml操作,那么恢复起来就简单许多,指定恢复的binlog,DML操作,恢复的时间段,即可生成数据,进行回滚。
以上就介绍了Flash的相关知识,希望对Flash有兴趣的朋友有所帮助。了解更多内容,请关注职坐标常用软件Flash频道!
您输入的评论内容中包含违禁敏感词
我知道了
请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号