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技術交流群!