汇聚能量,元气弹发射 | PingCAP Special Week - Tools matter 有感

做者:唐刘git

对于 80 后的男生来讲,『七龙珠』是一部绕不开的经典漫画,里面的主角孙悟空掌握了一项强大的必杀技 - 元气弹,他经过收集万物的能量,汇聚成一个有巨大破坏力的能量球,而后发射给反派将其战胜。往往在漫画里面看到这样的状况,年少的我就激动不已,梦想着有一天也能够本身举起双手,汇聚出元气弹。github

固然,如今咱们知道举起双手是不可能造出元气弹了,但从另外一方面来讲,若是咱们能很好地利用好你们的力量,统一的往一个方向努力,解决某一个特定的问题,这不就是另外一种元气弹的形式吗?在 PingCAP,咱们每一个季度都会作这样一次活动,叫作 Special Week(后面简称 SW),在 2019 年第四季度,咱们 SW 的主题是 - Tools matter,很直白,就是工具很重要。安全

PingCAP 一直致力于跟社区一块儿构建 TiDB 的生态,这其中 Tools 扮演了很是重要的角色。你们可能会用 TiDB Data Migration(如下简称 DM)将 MySQL 的数据迁移到 TiDB,或者使用 TiDB Binlog 工具将 TiDB 的数据同步到下游其余的服务。服务器

此次 Special Week 但愿集思广益,从其余角度来改进 Tools,下降你们使用 TiDB 的门槛。架构

为了将 SW 相关的进度公开到社区。咱们建立了一个 GitHub project 来放置全部的开发任务,研发的同窗自行组队去挑战相关的任务。通过了 5 天的全力开发,咱们取得了一些不错的成绩,下面跟你们一块儿看看咱们有了哪些不错的成果。分布式

增量备份

在此次活动中为 TiDB 新推出的 分布式快速备份和恢复工具(简称:BR) 实现了增量备份和恢复功能。效果展现以下:工具

搞定增量备份和恢复功能,对于完善基于 TiDB Binlog 的灾备集群方案具备重要意义。你们都知道 TiKV 使用 Raft 协议实现数据多副原本保证 TiDB 集群的数据安全,而 TiDB Binlog 某种意义上是 TiDB 集群的另外一份冗余数据,若是咱们再实现 TiDB Binlog 多副本,复杂且意义不大。可是当 TiDB Binlog 出现数据损坏,对灾备集群等使用场景影响是重大的。增量备份和恢复功能能够快速填补上 TiDB Binlog 数据损坏的时间段数据,大大缓解方案上的这一缺陷,疗效堪称快速续命丸。测试

DM 高可用

让 TiDB 自研的 DM(从 MySQL 迁移数据到 TiDB 的工具) 支持了高可用的特性,使得用户免于遭受在节假日甚至凌晨发现挂掉一台服务器而紧急 OnCALL 的苦恼,也为 DM 能够用在一些关键场景中作了铺垫。spa

下图是实现 DM 高可用的架构图:设计

Tools Chaos 测试

Chaos Mesh 是咱们最新开发的,基于 Kubernetes(K8s) 的一套 Chaos Engineering 解决方案,只要你的服务能跑在 K8s 上面,就能够直接集成 Chaos Mesh 进行 chaos 测试。

在此次 SW,咱们将 DM、TiDB Binlog、BR 以及 CDC 都成功地跑在了 K8s 上面,而后使用 Chaos Mesh 进行了测试,也发现了一些问题,改善了整个 Tools 的稳定性。

咱们在 2019 年 12 月 31 日正式开源 Chaos Mesh,项目地址:https://github.com/pingcap/chaos-mesh,欢迎你们使用。

生态合做

在本次 SW 咱们也欣喜地看到,一些企业也有很强烈的意愿跟咱们一块儿来构建工具的生态,此次 SW 咱们主要跟外部企业一块儿进行了三个项目:

PITR ( Point in Time Recovery)

这个项目是跟某互联网公司一块儿进行的,主要是将 Binlog 的增量备份进行合并,生成一个更轻量级的备份文件,加速同步的速度(项目地址 https://github.com/lvleiice/Better-PITR )。

PITR 的核心功能在以前 PingCAP 举办的 2019 Hackathon 中已经完成,详见《直击备份恢复的痛点:基于 TiDB Binlog 的快速时间点恢复》,在此次 SW 咱们将其进一步完善加强,主要包括:

  1. 增长 CI,提高测试覆盖率。
  2. 修复读取历史 DDL 报错问题。
  3. 对压缩前预处理阶段提速,200 条 DDL 测试下,相比以前,提速 68 倍。

后续,咱们仍然会继续跟社区一块儿合做完成该项目,咱们也在 Slack 上面创建了相关的 working group,欢迎感兴趣的同窗参与。

TiKV Raw 模式备份恢复

除了直接使用 TiDB,有些用户也会直接使用 TiKV,现阶段咱们只提供了 TiDB 的备份工具 - BR,并无单独针对 TiKV。

因此在此次 SW 咱们跟一点资讯一块儿合做,让 BR 支持了 TiKV 的备份和恢复。如今已经完成了 BR 这一段的开发,还剩 TiKV 这边一点工做的收尾,欢迎感兴趣的同窗关注 https://github.com/pingcap/br/issues/86

基于 DM 支持 Syncer

为了方便用户将 MySQL 的数据同步给 TiDB,咱们早期开发了 syncer 这个工具,后来为了支持更强大的功能,咱们开发了一套新的同步工具 - DM。DM 易用性,稳定性更强,并支持高可用。后期咱们会逐步废弃掉 syncer ,再也不同时维护 DM 和 syncer 两套代码。但出于历史缘由一些用户仍然在使用 syncer,如何方便地从 syncer 迁移到 DM,是咱们此次 SW 要解决的问题。

咱们跟某知名互联网金融公司合做,基于 DM 的 sync 模块开发另外一个 syncer,兼容以前老的 syncer,让用户能无缝迁移。

如今相关的开发进度在 https://github.com/pingcap/dm/pull/433,欢迎你们参与。

写在最后

通过接近一年的探索,Special Week 在 PingCAP 已经逐渐成为一个独特的文化。刚刚结束的 Q4 Sepcial Week 把 PingCAP 与用户和开源社区紧密结合在了一块儿。咱们但愿与社区在将来有更多的合做,完成更多有价值的项目。这也是为何你们能够看到此次的 SW 的大部分讨论,设计,进度都公开到 GitHub 的缘由。

咱们会整合此次 Sepcial Week 中产生的项目,创建一些社区能够参与的工做组,欢迎你们从 这里 找到本身感兴趣的工做组,与咱们一块儿构建 TiDB 生态工具社区。

原文阅读https://pingcap.com/blog-cn/special-week-tools-matter/

相关文章
相关标签/搜索