匯聚能量,元氣彈發射 | PingCAP Special Week - Tools matter 有感

作者:唐劉

對於 80 後的男生來說,『七龍珠』是一部繞不開的經典漫畫,裏面的主角孫悟空掌握了一項強大的必殺技 - 元氣彈,他通過收集萬物的能量,匯聚成一個有巨大破壞力的能量球,然後發射給反派將其打敗。每每在漫畫裏面看到這樣的情況,年少的我就激動不已,夢想着有一天也可以自己舉起雙手,匯聚出元氣彈。

當然,現在我們知道舉起雙手是不可能造出元氣彈了,但從另一方面來說,如果我們能很好地利用好大家的力量,統一的往一個方向努力,解決某一個特定的問題,這不就是另一種元氣彈的形式嗎?在 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 可以用在一些關鍵場景中做了鋪墊。

下圖是實現 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/

發佈了250 篇原創文章 · 獲贊 280 · 訪問量 12萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章