Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【MySQL】MyFlash 回滚mysql binlog

【MySQL】MyFlash 回滚mysql binlog

作者头像
MySQL技术
发布于 2019-09-08 11:51:20
发布于 2019-09-08 11:51:20
4.2K00
代码可运行
举报
文章被收录于专栏:MySQL技术MySQL技术
运行总次数:0
代码可运行

简介:

数据库运行过程中难免会发生误操作,特别是在测试环境 开发人员或测试人员有时会误删或者更新错误某些数据。这时可以用binlog闪回DML操作。本篇文章主要介绍通过MyFlash工具来回滚binlog。

MyFlash是由美团点评公司技术工程部开发维护的一个回滚DML操作的工具。该工具通过解析v4版本的binlog,完成回滚操作。相对已有的回滚工具,其增加了更多的过滤选项,让回滚更加容易。

项目地址: MyFlash项目

安装:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
git clone https://github.com/Meituan-Dianping/MyFlash.git
cd MyFlash
gcc -w  `pkg-config --cflags --libs glib-2.0` source/binlogParseGlib.c  -o binary/flashback
cd binary
./flashback --help --查看帮助

使用:

下面的这些参数是可以任意组合的。

1.databaseNames

指定需要回滚的数据库名。多个数据库可以用“,”隔开。如果不指定该参数,相当于指定了所有数据库。

2.tableNames

指定需要回滚的表名。多个表可以用“,”隔开。如果不指定该参数,相当于指定了所有表。

3.start-position

指定回滚开始的位置。如不指定,从文件的开始处回滚。请指定正确的有效的位置,否则无法回滚

4.stop-position

指定回滚结束的位置。如不指定,回滚到文件结尾。请指定正确的有效的位置,否则无法回滚

5.start-datetime

指定回滚的开始时间。注意格式必须是 %Y-%m-%d %H:%M:%S。 如不指定,则不限定时间

6.stop-datetime

指定回滚的结束时间。注意格式必须是 %Y-%m-%d %H:%M:%S。 如不指定,则不限定时间

7.sqlTypes

指定需要回滚的sql类型。目前支持的过滤类型是INSERT, UPDATE ,DELETE。多个类型可以用“,”隔开。

8.maxSplitSize

一旦指定该参数,对文件进行固定尺寸的分割(单位为M),过滤条件有效,但不进行回滚操作。该参数主要用来将大的binlog文件切割,防止单次应用的binlog尺寸过大,对线上造成压力

9.binlogFileNames

指定需要回滚的binlog文件,目前只支持单个文件,后续会增加多个文件支持

10.outBinlogFileNameBase

指定输出的binlog文件前缀,如不指定,则默认为binlog_output_base.flashback

11.logLevel

仅供开发者使用,默认级别为error级别。在生产环境中不要修改这个级别,否则输出过多

12.include-gtids

指定需要回滚的gtid,支持gtid的单个和范围两种形式。

13.exclude-gtids

指定不需要回滚的gtid,用法同include-gtids

测试:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#回滚某一时间段内的binlog
/root/test/MyFlash/binary/flashback --binlogFileNames=/mysqllog/mysql-bin.000011 --start-datetime="2018-01-04 13:50:00" --stop-datetime="2018-01-04 14:35:00" --databaseNames=test --tableNames=test_tb --sqlTypes='UPDATE','DELETE' --outBinlogFileNameBase=test_tb
#查看回滚得出的反向sql
mysqlbinlog  --base64-output=decode-rows -vv binlog_output_base.flashback 
#执行恢复
mysqlbinlog  binlog_output_base.flashback |mysql -uroot -pyourpass 

可以在.bash_profile增加

alias flashback="/root/test/MyFlash/binary/flashback"

以后即可这样使用

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
flashback --binlogFileNames=/mysqllog/mysql-bin.000011 --start-datetime="2018-01-04 13:50:00" --stop-datetime="2018-01-04 14:35:00" --databaseNames=test --tableNames=test_tb --sqlTypes='UPDATE','DELETE' --outBinlogFileNameBase=test_tb
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-01-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 MySQL技术 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
技术分享 | MySQL 闪回工具 MyFlash
MyFlash 是美团点评开源的一个 MySQL 闪回工具,可以用来回滚 MySQL 中的 DML 操作,恢复到某时刻的数据。本文将简单地介绍 MySQL 闪回工具 MyFlash 的使用。
爱可生开源社区
2020/12/30
1.4K0
DML 误操作?MySQL 闪回工具大盘点
作者:雷文霆,爱可生华东交付服务部 DBA 成员,主要负责 MySQL 故障处理及相关技术支持。爱好看书,电影。座右铭,每一个不曾起舞的日子,都是对生命的辜负。 ----
爱可生开源社区
2025/04/09
2090
DML 误操作?MySQL 闪回工具大盘点
MySQL误删恢复方法1
MySQL不同于oracle,没有闪回查询这类概念,但网上流传几个闪回的开源工具如 binglog2sql、MyFlash,可以使用binglog日志进行误操作数据的恢复。
雪人
2022/11/14
8160
如何利用 Myflash 解析 binlog ?
作者 | 李真旭:网名 Roger,Oracle ACE,拥有超过10年的 Oracle 运维管理使用经验;参与过众多移动、电信、联通、银行等大型数据库交付项目, 具有丰富的运维管理经验,对 Oracle 数据库管理运行机制、锁机制、优化机制等具有深入理解;擅长 Oracle 数据库的 performance tunning、troubleshooting 以及异常恢复;个人博客:http://www.killdb.com
数据和云
2018/07/27
6880
如何利用 Myflash 解析 binlog ?
mysql误删恢复一例-使用MyFlash
MyFlash是美团开源的一个回滚DML操作的工具。该工具通过解析v4版本的binlog,完成回滚操作。
laosu
2021/07/06
1K0
[MYSQL] 几款免费的mysql binlog回滚工具的使用比较
在mysql日常运维中, 难免遇到需要回滚binlog的时候, 市面上能回滚binlog的工具还挺多的, 但都各种小问题, 今天我就来简单测评一下. 从使用难易度, 兼容性(主要测试5.7, 8.0, 8.4), 流行度, 最近一次维护时间等方面进行综合评价.
大大刺猬
2025/03/13
6130
如何用shell脚本闪回binlog呢
简介: 上篇推文 笔者介绍了如何用开源工具来闪回binlog,但有时候我们的机器无法安装这些开源工具。这时候我们可以使用shell脚本来闪回binlog,是不是觉得方便多了。
MySQL技术
2019/09/08
7240
MySQL复制(二) - 详聊binlog日志
​有了binlog日志,我们可以实现主从架构,可以用canal、maxwell等工具实现将MySQL数据同步到大数据环境;同时可以对binlog进行解析,可以实现快速的数据恢复(Flashback),如使用binlog2sql、Myflash、Mariadb mysqlbinlog等,要实现这些功能,对binlog的详细了解是有必要的。
懒熊
2021/01/14
7840
MySQL复制(二) - 详聊binlog日志
删库不跑路!我含泪写下了 MySQL 数据恢复大法…
点击关注公众号,Java干货及时送达 作者:程淇铭 来源:segmentfault.com/a/1190000020116271 日常工作中,总会有因手抖、写错条件、写错表名、错连生产库造成的误删库表和数据的事情发生,那么,如果连数据都恢复不了,还要什么 DBA。 相关文章 MySQL备份策略:https://segmentfault.com/a/1190000019955399 MySQL数据恢复:https://segmentfault.com/a/1190000020116271 1 前言 数据恢
Java技术栈
2022/03/18
7090
恢复误操作的方法
前一段时间接二连三的出现开发人员在测试环境和生产误操作导致数据库误删除/更新,对DBA而言,回滚数据着实是一件头疼的事情,凡涉及到恢复线上数据必然对应用带来一定的影响。大多数情况是开发误操作delete数据,update多数行,根据之前的操作经验,本文介绍常用的恢复方法。
用户1278550
2018/08/09
8640
MYSQL数据闪回方式
MYSQL官方截止目前还没有出来数据闪回特性,也许后续版本会出现。社区有一些开源工具可以使用,沿用的基本都是彭立勋最早提出的思路,利用binlog对SQL进行反向解析,从而实现数据闪回,例如不带where条件的update操作,导致全表数据被误更新。 闪回前提: binlog_format = ROW 操作模拟: 没加where条件,导致全表更新;或者没加host列,导致多余行被更新。 我只想把user=test_user1,host=1.1.1.1改密码,但是没加host条件。此时并没有及时发现,直到报错
MySQL轻松学
2018/03/09
3.1K1
MYSQL数据闪回方式
数据库误操作数据恢复
小明都想好跑路的国家了,小董出手相助,祭出今天要介绍的工具ra,github地址:https://github.com/DHBin/raopen in new window
DH镔
2023/10/21
2850
删库不跑路:论MySQL数据恢复
日常工作中,总会有因手抖、写错条件、写错表名、错连生产库造成的误删库表和数据的事情发生,那么,如果连数据都恢复不了,还要什么 DBA。
JavaFish
2020/07/21
1.7K0
使用binlog2sql针对mysql进行数据恢复
DBA或开发人员,有时会误删或者误更新数据,如果是线上环境并且影响较大,就需要能快速回滚。传统恢复方法是利用备份重搭实例,再应用去除错误sql后的binlog来恢复数据。此法费时费力,甚至需要停机维护,并不适合快速回滚。也有团队利用LVM快照来缩短恢复时间,但快照的缺点是会影响mysql的性能。
大道七哥
2019/09/10
9530
【MySQL】删库别着急跑路(三)--binlog2sql闪回工具的使用
再说binlog2sql闪回工具之前,我们先聊下binlog。Binlog记录了MySQL数据库所有的DDL和DML操作。它在MySQL数据库里起着至关重要的作用。
MySQL数据库技术栈
2020/08/05
7200
【MySQL】删库别着急跑路(三)--binlog2sql闪回工具的使用
Mysql备份与恢复
用于保证InnoDB备份数据时的一致性,配合RR隔离级别一起使用;当发起事务时,读取一个数据的快照,直到备份结束,都不会读取到本事务开始之后提交的任何数据
mikelLam
2022/10/31
3.6K0
【MySQL】Mysql误操作后使用binlog2sql快速回滚
DML(data manipulation language): 它们是SELECT、UPDATE、INSERT、DELETE,就象它的名字一样,这4条命令是用来对数据库里的数据进行操作的语言 DDL(data definition language): DDL比DML要多,主要的命令有CREATE、ALTER、DROP等,DDL主要是用在定义或改变表(TABLE)的结构,数据类型,表之间的链接和约束等初始化工作上,他们大多在建立表时使用 DCL(Data Control Language): 是数据库控制功能。是用来设置或更改数据库用户或角色权限的语句,包括(grant,deny,revoke等)语句。在默认状态下,只有sysadmin,dbcreator,db_owner或db_securityadmin等人员才有权力执行DCL
用户5522200
2019/06/02
1.7K0
[715]python binlog2sql同步mysql数据
binlog是记录所有数据库表结构变更(例如CREATE、ALTER TABLE…)以及表数据修改(INSERT、UPDATE、DELETE…)的二进制日志。
周小董
2020/01/13
2.1K0
[715]python binlog2sql同步mysql数据
binlog2sql,你该知道的数据恢复工具
今天分享一下binlog2sql,它是一款比较常用的数据恢复工具,可以通过它从MySQL binlog解析出你要的SQL,并根据不同选项,可以得到原始SQL、回滚SQL、去除主键的INSERT SQL等。主要用途如下:
俊才
2020/09/24
2.2K0
关于mysql binlog二进制
在mysql中,当发生数据变更时,都会将变更数据的语句,通过二进制形式,存储到binlog日志文件中.
仙士可
2020/04/21
1.2K0
相关推荐
技术分享 | MySQL 闪回工具 MyFlash
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验