Py学习  »  DATABASE

美团点评开源 MySQL 极速闪回工具 MyFlash | 软件推介

开源中国 • 6 年前 • 443 次点击  


MyFlash 是由美团点评公司技术工程部开发维护且内部使用的一个回滚 DML 操作的工具


简介


MyFlash 是由美团点评公司技术工程部开发维护且内部使用的一个回滚 DML 操作的工具,旨在方便且高效地进行数据恢复,已于近日宣布开源。该工具通过解析 v4 版本的 binlog ,完成回滚操作。相对已有的回滚工具,其增加了更多的过滤选项,让回滚更加容易。


开发团队也在其博客上将 MyFlash 与市面上现有的闪回工具进行了对比。目前市面上已有的恢复工具,从实现角度把可划分成如下几类。


① mysqlbinlog 工具配合 sed、awk 。该方式先将 binlog 解析成类 SQL 的文本,然后使用 sed、awk 把类 SQL 文本转换成真正的 SQL 。


  • 优点:当 SQL 中字段类型比较简单时,可以快速生成需要的 SQL ,且编程门槛也比较低。

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


② 给数据库源码打 patch 。该方式扩展了 mysqlbinlog 的功能,增加 Flashback 选项。


  • 优点:复用了 MySQL Server 层中 binlog 解析等代码,一旦稳定之后,无须关心复杂的字段类型,且效率较高。

  • 缺点:在修改前,需要对 MySQL 的复制代码结构和细节需要较深的了解。版本比较敏感,在 MySQL 5.6 上做的 patch ,基本不能用于 MySQL 5.7 的回滚操作。升级困难,因为 patch 的代码是分布在 MySQL 的各个文件和函数中,一旦 MySQL 代码改变,特别是复制层的重构,升级的难度不亚于完全重新写一个。


③ 使用业界提供的解析 binlog 的库,然后进行 SQL 构造。其优秀代表是 binlog2sql 。


  • 优点:使用业界成熟的库,因此稳定性较好,且上手难度较低。

  • 缺点:效率往往较低,且实现上受制于 binlog 库提供的功能。


上述几种实现方式,主要是提供的过滤选项较少,比如不能提供基于 SQL 类型的过滤,需要回滚一个 delete 语句,导致在回滚时,需要结合 awk、sed 等工具进行筛选。总结了上述几种工具的优缺点,理想的闪回工具应具有以下特性。


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

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

  • 支持 MySQL 多个版本。

  • 对于数据库的代码重构不敏感,利于升级。

  • 自主掌控 binlog 解析,提供尽可能灵活的方式。


MyFlash 应运而生。


性能对比


测试场景


使用 testFlashback2 ,插入 100 万条数据:


CREATE TABLE `testFlashback2` (

  `id` int(11) NOT NULL AUTO_INCREMENT,

  `nameShort` varchar(20) DEFAULT NULL,

  `nameLong` varchar(260) DEFAULT NULL,

  `amount` decimal(19,9) DEFAULT NULL,

  `amountFloat` float DEFAULT NULL,

  `amountDouble` double DEFAULT NULL,

  `createDatetime6` datetime(6) DEFAULT NULL,

  `createDatetime` datetime DEFAULT NULL,

  `createTimestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,

  `nameText` text,

  `nameBlob` blob,

  `nameMedium` mediumtext,

  PRIMARY KEY (`id`)

) ENGINE=InnoDB


mysql> select count(*) from testFlashback2;

+----------+

| count(*) |

+----------+

|  1048576 |

+----------+

1 row in set (0.16 sec)


delete from testFlashback2;


测试结果 





感恩节福利

11 月 27 日之前,只要在【你谈见解我送书:你所不了解的 Kafka | 感恩节福利】文末留言你在试读书籍第一章后的见解,就有机会获得文中提及技术书籍一本!快来留言吧,说不定中奖的就是你哦!!



推荐阅读

Linux 运维人员最常用 150 个命令汇总

阿里 Dubbo 疯狂更新,关 Spring Cloud 什么事?

TIOBE 11 月编程语言排行榜,脚本语言怎么了?

用 Vue 做一个酷炫的 menu

点击“阅读原文”查看更多精彩内容


今天看啥 - 高品质阅读平台
本文地址:http://www.jintiankansha.me/t/ZI6jgQTw0F
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/4296
 
443 次点击