做者:唐劉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 數據損壞的時間段數據,大大緩解方案上的這一缺陷,療效堪稱快速續命丸。測試
讓 TiDB 自研的 DM(從 MySQL 遷移數據到 TiDB 的工具) 支持了高可用的特性,使得用戶免於遭受在節假日甚至凌晨發現掛掉一臺服務器而緊急 OnCALL 的苦惱,也爲 DM 能夠用在一些關鍵場景中作了鋪墊。spa
下圖是實現 DM 高可用的架構圖:設計
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 咱們主要跟外部企業一塊兒進行了三個項目:
這個項目是跟某互聯網公司一塊兒進行的,主要是將 Binlog 的增量備份進行合併,生成一個更輕量級的備份文件,加速同步的速度(項目地址 https://github.com/lvleiice/Better-PITR )。
PITR 的核心功能在以前 PingCAP 舉辦的 2019 Hackathon 中已經完成,詳見《直擊備份恢復的痛點:基於 TiDB Binlog 的快速時間點恢復》,在此次 SW 咱們將其進一步完善加強,主要包括:
後續,咱們仍然會繼續跟社區一塊兒合做完成該項目,咱們也在 Slack 上面創建了相關的 working group,歡迎感興趣的同窗參與。
除了直接使用 TiDB,有些用戶也會直接使用 TiKV,現階段咱們只提供了 TiDB 的備份工具 - BR,並無單獨針對 TiKV。
因此在此次 SW 咱們跟一點資訊一塊兒合做,讓 BR 支持了 TiKV 的備份和恢復。如今已經完成了 BR 這一段的開發,還剩 TiKV 這邊一點工做的收尾,歡迎感興趣的同窗關注 https://github.com/pingcap/br/issues/86。
爲了方便用戶將 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/