mysql闪回工具比较
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闪回工具比较