2.0 解析系列 | OceanBase的重要基礎設施——DBReplay

螞蟻金服OceanBase資料庫團隊發表於2019-03-01
OB君:9月21日,OceanBase 2.0 在雲棲大會上重磅釋出。我們將在接下來的時間裡為大家持續推出 “OceanBase 2.0 技術解析系列” 文章,分別從 可運維性、分散式架構、資料可用性、價效比及相容性 五個方面對OceanBase 2.0的產品新特性及其背後的技術原理進行深入的解析。
今天我們就從可運維性中一個很重要的功能DBReplay聊起,更多內容歡迎持續關注本系列!
2.0 解析系列 | OceanBase的重要基礎設施——DBReplay

本文作者:沈煉

現任螞蟻金服OceanBase DBA團隊高階技術專家,2014年加入阿里巴巴,從事領域涉及螞蟻核心業務上OB、資料流基礎設施運維體系建設等,目前主要負責OceanBase的高可用體系建設工作。

背景介紹

傳統資料庫如何平滑遷移至OceanBase,遷移到OceanBase後如何平滑升級,如何保障穩定性,這是架構師們不得不考慮的問題。今天我們將重點介紹一個專門為這些場景而生的利器 —— DBReplay。

DBReplay是從生產庫擷取的真實流量,然後再在測試庫回放用於測試資料庫系統的功能和效能的工具。它不僅回放讀流量,也回放寫流量,保證在整個回放過程中的資料和真實線上的資料是一致的,所有查詢基於的快照點和真實線上也是一致的,並且保證SQL執行過程中的資料集與生產庫完全一致,從而在測試庫覆蓋生產庫的每一個功能場景和效能場景。

整體架構介紹

2.0 解析系列 | OceanBase的重要基礎設施——DBReplay

DBReplay的整體架構圖如上圖所示:

  • 通過備份恢復功能,使用線上庫的資料恢復出一個測試庫,恢復到具體某一個點,稱為回放點
  • 擷取線上庫回放點以後所有的流量生成流量檔案,流量檔案的結束點稱為截止點
  • 通過一個離線處理的程式分析所有的流量檔案,生成真正用於回放的回放檔案。這個過程主要解決事務間的依賴關係
  • 主控機讀取流量回放檔案控制多個客戶端回放擷取流量到測試庫,回放期間,我們可以進行各項測試工作,例如業務功能驗證,資料庫升級驗證,外部系統功能驗證
  • 採集流量回放期間測試庫的各項指標,與線上庫進行比對,分析功能差異,效能差異,資料差異
  • 通過備份恢復功能,使用線上庫的資料恢復出一個比對庫,恢復到截止點,與測試庫的資料進行全量比對,判斷資料是否完全一致

應用場景介紹

1. 傳統資料庫平滑遷移OceanBase

傳統資料庫遷移OceanBase的過程中,最大的難點就是如何驗證OceanBase的相容性。業務系統非常複雜,例如訂單型業務、狀態型業務、契約型業務、分析型業務,這些業務的流量特點和使用資料庫的方式各不相同,大量專門設計的測試驗證方案不但成本昂貴,而且很難完全覆蓋真實場景。DBReplay正是為這一場景而生,我們以MySQL遷移OB為例,其架構圖如下:

2.0 解析系列 | OceanBase的重要基礎設施——DBReplay

由於目標庫是MySQL資料庫,為了避免對業務系統的侵入,我們採取了tcpdump的方式去抓取流量,這是一個通用的方案,避免各種環境下的許可權問題。抓取的流量分別在MySQL測試環境和OB測試環境進行回放,並做功能比對、效能比對和資料比對,並生成報表。

結合OceanBase的MySQL相容性和Oracle相容性,最終做到傳統資料庫到OceanBase的平滑遷移。基於該方案,我們支援了螞蟻內部的MySQL/Oracle上的業務向OceanBase的平滑遷移。

2.OceanBase平滑升級

業務系統執行在OceanBase以後,OceanBase需要給這些業務系統在響應時間,吞吐量,高可用,可擴充套件性等方面提供服務級別的保證。對OceanBase的任何變更(例如OceanBase升級),都需要進行全方面的測試和驗證,然後才能釋出到生產環境。大量的測試驗證方案很難完全覆蓋真實場景,DBReplay解決了以上挑戰。我們可以在流量回放階段進行OceanBase升級,並驗證升級過程中的穩定性及升級後的執行計劃變化,對於不正確的執行計劃進行提前繫結。

3.功能驗證

DBReplay還提供了加速回放功能,可以用來模擬大促等業務流量暴增的場景;可以搭建迴歸環境,通過DBReplay回放業務流量,從而進行功能驗證,例如我們在螞蟻內部搭建了一個高可用體系迴歸環境,進行7*24的故障注入,驗證高可用體系的覆蓋率和正確性。

結語

閱讀《文明之光》有所感,印刷術是人類歷史上最重要的發明之一,其傳承人類的文明,讓人類得以快速發展。歷史上,有兩個人獨立發明了印刷術,一個是中國宋代的畢昇(雕版印刷術),一個是德國人古騰堡(活字印刷術)。

畢昇的發明比古騰堡早了400年,但在發明之後,基本上沒有實際應用。活字印刷術在中國的普及,是在古騰堡解決了好幾個畢昇沒有觸及的關鍵性技術問題後(古騰堡字幕庫,手搖印刷機,排字、校對、裝版一整套印刷工藝流程),才使得活字印刷術最終取代了雕版印刷。

活字印刷術相比雕版印刷術而言可謂是顛覆式的創新。但是,這種創新僅僅靠一項關鍵性技術遠遠不夠,還必須解決和它相關聯和配套的技術,才能讓它成為改變世界、開創歷史的殺手鐗。

OceanBase相比於傳統資料庫已經進行了顛覆式的創新,融合了關聯式資料庫與分散式系統的優勢,這種融合使得OceanBase可以跨機房、跨地域、甚至跨洲際部署實現較高的金融級可用性和事務的強一致性。OceanBase基於低成本通用硬體,具備線上水平擴充套件能力,創造了4200萬次/秒處理峰值的世界紀錄。

同樣,僅僅依靠單獨突破是遠遠不夠的,我們需要解決“配套”設施的問題,才能讓OceanBase真正的發揮出威力。DBReplay正是這樣的一個重要的基礎設施,解決了傳統資料庫遷移OceanBase過程中的一些列問題,以及遷移到OceanBase後的穩定性保障問題。

下期預告
本文是“OceanBase 2.0 技術解析系列”文章的第三篇,下一篇將為你帶來《OceanBase負載均衡的魅力》。敬請期待!

2.0解析系列文章


相關文章