标签:分布 dba 动态 复数 维护 安装 有关 log insert
背景
:由于运维、开发误操作或是业务bug,我们在操作中时不时会出现误删除数据情况。早期要想恢复数据,只能让业务人员根据线上操作日志,构造误删除的数据,或者DBA使用binlog和备份的方式恢复数据,不管那种,都非常费时费力,而且容易出错。
MyFlash
是由美团点评公司技术工程部开发维护的一个回滚DML操作的工具。该工具通过解析v4版本的binlog,完成回滚操作。相对已有的回滚工具,其增加了更多的过滤选项,让回滚更加容易。
1.mysqlbinlog工具配合sed、awk
。该方式先将binlog解析成类SQL的文本,然后使用sed、awk把类SQL文本转换成真正的SQL。
2.给数据库源码打patch。该方式扩展了mysqlbinlog的功能,增加Flashback选项
。
3.使用业界提供的解析binlog的库,然后进行SQL构造,其优秀代表是binlog2sql
。
4.MyFlash
特点
无需把binlog解析成文本,再进行转换
。提供原生的基于库、表、SQL类型、位置、时间等多种过滤方式
。unzip MyFlash-master.zip
gcc -w pkg-config --cflags --libs glib-2.0 source/binlogParseGlib.c -o binary/flashback
全部参数请通过--help查看,以下指列举部分常用参数。
回滚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<host> -u<user> -p
MySQL下的误删除恢复经常会碰到,之前我们的普遍做法都是通过mysqlbinlog flashback参数来生成回滚数据,但是有些时候会比较麻烦,因为无法只选择某一类操作,所以会导致恢复的数据会涵盖其他类型的操作,需要人工再次过滤,比较费时费力。
MyFlash的参数可以选择dml操作,那么恢复起来就简单许多,指定恢复的binlog,DML操作,恢复的时间段,即可生成数据,进行回滚。
https://github.com/Meituan-Dianping/MyFlash
标签:分布 dba 动态 复数 维护 安装 有关 log insert
原文地址:https://www.cnblogs.com/xuty/p/9046440.html