OB君:9月21日,OceanBase 2.0 在雲棲大會上重磅發布。我們將在接下來的時間裡為大家持續推出 「OceanBase 2.0 技術解析系列」 文章,分別從 可運維性、分散式架構、數據可用性、性價比及兼容性 五個方面對OceanBase 2.0的產品新特性及其背後的技術原理進行深入的解析。今天我們就重點聊聊OceanBase 2.0在線升級的那些事。更多內容歡迎持續關注本系列!

本文作者:遊愚

現任螞蟻金服OceanBase DBA團隊高級運維工程師,2016年加入OceanBase DBA團隊,從事OceanBase資料庫運維與運維繫統建設工作。

原文:

OceanBase 2.0在性能,成本和可用性上帶來了一系列的新特性,而對於資料庫的一線運維人員,或許對可運維性和運維風險這兩方面更加關心。面對OceanBase 2.0新版本的美好特性,運維人員如何安全無風險的對OceanBase資料庫進行升級如何防止升級引入新問題對生產系統造成故障?

OceanBase(以下簡稱為OB)作為一款金融場景的分散式資料庫,升級必須能做到平滑,可灰度,可回滾,為業務提供24小時不間斷的服務。得益於分散式架構,一個OB資料庫實例由多個可用區(zone)同時提供服務(通常為3個或5個)。

在資料庫升級過程中,OceanBase 2.0版本支持不同的可用區使用新舊兩個資料庫版本同時提供服務,新舊版本可互相兼容。多個可用區可以輪轉升級,做到升級過程對應用透明無感知,可運維性大大提升。

輪轉升級

OceanBase 2.0集羣升級可採用多個可用區輪轉升級的方式,也就是對可用區逐一進行升級。

升級某個可用區前,首先將該可用區置為停止服務。此時副本的主將自動切換到其他可用區, 該可用區的數據副本將不承擔業務讀寫流量。此時對該可用區下的OB進程進行升級和重啟操作,不會影響到應用的db讀寫。待該可用區升級完成後,重新將其置為提供服務狀態。此時該可用區將重新承擔業務流量。之後以此過程再依次升級剩餘可用區。整個升級過程應用無感知,應用無需配合db端做任何的停寫停服務操作。

灰度切流驗證

對升級較敏感的核心業務,OceanBase 2.0版本提供了灰度切流驗證新版本的能力。灰度切流是指將業務流量按百分比逐步切換到新版本上。OceanBase允許用戶數據的多個副本使用新舊兩個OB版本。運維人員進行資料庫升級時(例如從OceanBase 1.0升級到2.0),可以選擇OB集羣中的一部分可用區升級到新版本,之後將主副本逐步切換到新版本的可用區上,以驗證新版本OB的功能和性能。一旦發現問題,可以立即回切到舊版本的可用區。保證應用持續可用,升級安全可靠。

除此之外,OceanBase 2.0的DB Replay功能也可以用於新版本的驗證,運維人員可以搭建新版本的OB集羣並將舊版本OB的讀寫流量回放到新版本的測試集羣上,提前驗證新版本。大大降低了運維人員做資料庫升級的風險,這個功能我們也會在後續的文章中深入講解。

新舊版本兼容

為了保證同一個OB集羣可以新舊多個版本同時運行,OceanBase 2.0在內部實現上保證新舊版本的兼容和可回退。同時兼容了OceanBase 1.0的協議與數據格式,從1.0到2.0版本的升級同樣也能做到如小版本升級一樣平滑。

新版本如果對RPC行為進行了修改,如何與舊版本的OB進行通信呢? 實際上OB新版本會保留舊版本的RPC行為。可以通過集羣內部的版本號參數來控制OB使用哪個版本的RPC行為。當OB集羣的所有可用區都升級到新版本後,將版本號設為新版本,此時才使用新RPC行為進行通信。

升級回滾

與1.0相比,OceanBase 2.0同時也允許將集羣的版本回退到升級前的版本。運維人員只需按照和升級流程相同的方式將OB集羣的多個可用區輪轉降級到原版本即可。回退過程同樣對應用透明。

那麼如果新版本的數據存儲格式發生了變化,如何回退版本呢?對於這種情況,集羣同樣有內部參數控制存儲是使用新數據格式還是舊數據格式。若要回退到舊數據格式,運維人員需要修改參數並進行一次全量合併。當存儲數據回退到舊數據格式後,纔可以繼續做版本回退。

平臺支持

OceanBase雲管控平臺(簡稱OCP)提供了對OceanBase 2.0集羣一鍵升級的能力,支持全集羣升級和集羣部分可用區升級。流程包括了升級的預檢查和後檢查,可用區輪轉升級,集羣參數升級,內部表修改等升級步驟。運維人員無需黑屏操作,一鍵即可完成對一個集羣的升級操作,大大提升了一線運維人員的幸福感。

下期預告

本文是「OceanBase 2.0 技術解析系列」文章的第二篇,下一篇將為你係統分析OceanBase 2.0中的DB Replay功能。敬請期待!

OceanBase 2.0技術交流羣

想了解更多 OceanBase 2.0 特性?

想與螞蟻金服OceanBase的一線技術專家深入交流?

在微信添加好友處搜索「liqiqi68536632」添加小編微信,快速加入OceanBase技術交流羣!

加入我們

【OB雲平臺研發專家/架構師】

崗位職責:

1. 負責大規模運維繫統,比如自驅動平臺或AIOPS的設計開發,包括部署、監控、備份、高可用、容器化等能力,服務雲上和雲下企業用戶;

2. 帶領一個研發小組,負責產品整體架構的設計、確定核心模塊的功能實現方案和性能優化方案;3. 參與平臺架構的設計,主導設計底層模塊,技術實現方案要兼顧性能、穩定性、擴展性和易用性。所有功能及異常通過數據驅動做到自恢復自優化;4. 團隊內外高效協作,確保前後端模塊的協同工作,開發團隊採用敏捷開發模式。【OB雲產品研發專家/演算法專家】

崗位職責:

1.需要理解業務,根據業務需求完善OceanBase雲產品,包括資料庫開發中心、自動化性能優化與診斷,容量和性能的分析預測,在線數據實時計算等等;

2.OceanBase驅動、工具研發,包括JDBC,SDK,API等;3.進行數據相關的採集、存儲、同步、管理等開發,基於數據做智能診斷,在數據採集、建模分析、產生決策、自動修復上形成閉環。

可直接發送簡歷到

[email protected],我們等的就是你!


推薦閱讀:
查看原文 >>
相關文章