mysql闪回工具比较

作者 : 开心源码 本文共1324个字,预计阅读时间需要4分钟 发布时间: 2022-05-12 共251人阅读

mysql需要回滚数据时,一般会有以下几种闪回工具:binlog2sql,mysqlbinlog,myflash,通过给数据源码打patch添加flashback选项

比照如下:

binlog2sql:

一。原理简介

通过binlog的events回滚,而后结合参数,实现各种过滤条件

二。执行速度

模拟误操作删除100W行数据

binlog2sql提取回滚SQL耗时:7m53s

三。缺点

效率往往较低,速度比mysqlbinlog还要慢,且实现上受制于binlog库提供的功能(比方说复制过滤),无过滤选项。

四。用限制

binlog格式必需为row

binlog_row_image = full

只能回滚DML,不支持DDL回滚

五。优点

1、纯Python开发,安装与用都很简单

2、自带flashback、no-primary-key解析模式,无需再装补丁

3、flashback模式下,更适合闪回实战

4、解析为标准SQL,方便了解、挑选

5、代码容易改造,可以支持更多个性化解析

mysqlbinlog:

一。原理简介

原厂出品的工具,利使用参数将binlog解析成文本文件

二。执行速度

模拟误操作删除100W行数据

mysqlbinlog解析日志耗时:1m44s

三。缺点

当SQL中字段类型比较复杂时,尤其是字段中的文本包含HTML代码,使用awk、sed等工具时,就需要考虑极其复杂的转义等情况,速度慢,出错概率很大。

四。用限制

mysql 5.1以下的版本,无法正常解析row格式的日志

只能解析出源SQL而后结合工具才能实现回滚操作

五。优点

当SQL中字段类型比较简单时,可以快速生成需要的SQL,开发难度低。

myflash:

一。原理简介

通过binlog的events回滚,而后结合参数,实现各种过滤条件

二。执行速度

模拟误操作删除100W行数据

MyFlash提取回滚SQL耗时:16s

三。缺点

解析binlog日志需要指定绝对路径

四。用限制

binlog格式必需为row

binlog_row_image=full

不支持mysql 5.6以下的版本

只能回滚DML,不支持DDL回滚

五。优点

1、无需把binlog解析成文本,再进行转换。

2、提供原生的基于库、表、SQL类型、位置、时间等多种过滤方式。

3、 对于数据库的代码重构不敏感,利于更新。

通过给数据源码打patch添加flashback选项

一。原理简介

通过修改binlog的源码,添加一个flashback的event_type

二。执行速度

应使用场景少,改造难度大,暂无法测试

三。缺点

采使用该工具,需要对MySQL的复制代码结构和细节需要较深的理解。版本比较敏感,在MySQL 5.6上做的patch,基本不能使用于MySQL 5.7的回滚操作。更新困难,由于patch的代码是分布在MySQL的各个文件和函数中,一旦MySQL代码改变,特别是复制层的重构,更新的难度不亚于完全重写。

四。用限制

binlog格式必需为row

由于该功能是彭立勋在5.5.18的基础上开发的,对于5.6以上版本支持可能不稳固

五。优点

复使用了MySQL Server层中binlog解析等代码,一旦稳固之后,毋庸关心复杂的字段类型,且效率较高。

DDL和DML语句均可以回滚

说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » mysql闪回工具比较

发表回复