有關 TiDB 升級的二三事——教你如何快樂升級

PingCAP發表於2022-01-12

資料庫升級本身就是存在一定風險的操作,TiDB 如何實現平安、順利、無感的遷移?本文結合一個使用量過億的使用者 K8s 叢集升級的案例,介紹了 TiDB 的升級工具包的使用方法,如何實現從簡單的引數比對到全場景的模擬重放,根據實際需求和成本考量自主選擇搭配方案。

有了 TiDB 升級工具包,不必在升級選擇面前患得患失,也不用在升級過程當中擔心焦慮閱讀本文,帶你快樂升級!**

升級的苦與樂

作為 TiDB 的老使用者,相信你在使用 TiDB 的時候,總有可能會遇到需要對資料庫進行升級的情況。一方面是因為 TiDB 本身是個快速迭代的產品,新版本的新特效能很好地解決實際業務中的問題;又或者是當前使用的版本遇到某個安全漏洞或 Bug,需要高質量更穩定的新版本支援。 無論是哪種情況,升級都被提上了議事日程。

但是作為資料庫老玩家的你,應該很清楚升級本身就是存在一定風險的操作,比如:新版本中存在一些新的配置引數需要你去了解和適配,配的不好可能會出問題;新版本修復了安全漏洞,嚴格了安全許可權,有些舊版本支援的訪問模式也需要隨之改寫;之前一些 SQL 的執行計劃好不容易的通過各種手段穩定下來,但是新版本也帶來了不確定性。這就像你去了若指掌的餐館點餐,突然間發現換了一個廚師,新師傅可能是米其林的大廚,但那道菜是不是你喜歡的口味卻因人而異。總之你和我的想法一樣,希望升級或遷移是平安的,順利的,甚至是無感的。以至於某天業務找到你的時候不是抱怨突然出現的問題,而是稱讚系統最近好用了很多,這才是升級最終的目的和價值。

TiDB 的百寶箱

那如何保證你的升級是平安順利的呢?TiDB 技術團隊提供了一組功能完善的升級工具包,從簡單的引數比對到全場景的模擬重放,你完全可以根據你的實際需求和成本考量自主選擇一種最佳的搭配方案,為你的升級操作保駕護航。 這套工具包實際上也已成功應用在了一款使用量過億的使用者 K8s 叢集升級上,在之後的篇幅中我們會介紹這個使用者案例。接下來我們先看看這些工具都是什麼:

  • TiDBA 通過對比升級前後版本的引數,幫助你快速識別出新版本引數的變化。
  • Pt-upgrade 用於mysql/maria/aurora等很多商業客戶的升級中,經過大量實踐確定是可用且可靠的。percona consulting團隊的主要工具。該工具使用 slow query log 在升級的源叢集(舊版本)和目標叢集(新版本)上同步回放,以測試 SQL 相容性。
  • Plan Change Capturer(PCC)  通過檢測不同版本 TiDB  的執行計劃變化,幫助你識別效能退步的 SQL,在升級前識別執行計劃變化帶來的風險。
  • Workload-sim 通過使用 Database Replay 在測試系統上執行真實的工作負載,幫助你全面評估升級的效果。

簡單來說,TiDBA 是引數比對工具,提示你新增或修改的引數;pt-upgrade 主要解決的是相容性和正確性問題;PCC 專門針對執行計劃,解決潛在效能回退的問題;而 Workload-sim 是一份全量業務負載的拷貝,不僅可以提前發現升級潛在的問題,還可以評估升級的效果。他們所花費的資源由低到高,相應驗證的效果也是從粗略到詳細,你可以根據你的需求進行選擇和自由組合。

某乎的升級之旅

接下來我們看看實戰演練。案例中的 TiDB 使用者是中文網際網路高質量的問答社群和創作者聚集的原創內容平臺,是中文最大的問答社群。選擇升級的原因是舊叢集版本較早,擔心遇到修復的已知問題,造成運維事故;此外客戶需要將所有業務統一到相同版本,方便統一運維管理。而待升級的叢集承載其商廣平臺業務,是其最重要的商業叢集之一,因此客戶格外重視此次升級的安全保障。因此我們推薦客戶採用 TiDBA + PCC + Workload-sim 的詳盡策略,最終客戶採用了 TiDBA 和 Workload-sim 對升級進行了測試驗證。

升級環境

首先我們來看看叢集的規模。

生產環境叢集資訊

測試環境叢集資訊

注意: 為了準確評估升級後風險,建議建立和生產環境規格類似的叢集進行測試。

升級流程

然後我們來看具體的升級測試流程。

  1. 使用 BR 從生產叢集備份全量資料
  2. 使用 BR 將全量資料 restore 到測試叢集
  3. 步驟 2 操作時,同時使用流量複製工具 workload-sim 在生產環境 v4.0.9 ,某一臺 TiDB 節點採集流量(需要確認所有 TiDB 節點業務流量均衡訪問)
  4. 步驟 2 完成,並且步驟 3 採集完成後,使用流量回放工具,在測試環境回放流量,收集資訊
  5. 將測試叢集從 v4.0.9 升級到 v4.0.14 目標版本,並且清空資料
  6. BR Restore 備份的全量資料(建議可以完全重建叢集,不會有 empty region 的影響)
  7. 使用流量回放工具在測試環境 v4.0.14 回放流量,收集資訊
  8. 比對 v4.0.9 和 v4.0.14 版本的流量回放資訊
  9. 4.0.9 生產和 4.0.14 的測試環境,使用 TiDBA 對比引數變化

升級比對

接下來我們來看看流量回放效果的對比。

升級前

升級後

從圖中可以明顯看出:升級前後,業務沒有明顯變化,因為是小版本的升級,是符合測試預期的。

後記

在完成升級測試工具的比對之後三天,客戶在業務低谷期對生產環境進行了升級操作,而最終實際的升級也是同樣的效果,整個過程相當平穩,業務基本沒有感知。看到這裡或許你會說,這結果看起來不是都一樣嘛?是的,小版本的升級以及正確的升級操作大概率是能順利收穫新版本一枚。不同的是,通過採用升級工具的驗證比對,再進行升級操作,你知道升級是安全可預期的,所以你大可不必在升級選擇面前患得患失,也不用在升級過程當中擔心焦慮。如果你還在憂慮糾結升級的苦與樂時,不妨來試試我們的升級工具,讓他們來幫助你快樂升級!

相關文章