友快網

導航選單

資料庫遷移:一個老生常談的問題,對資料庫遷移的需求有哪些思考?

本文轉載自 韓鋒頻道  作者:韓鋒

資料庫遷移,是個老生常談的問題,之前也曾寫過一篇文章。近期,針對這一課題,自己有了些新的思考,下面將具體展開談談。在這之前,我先談談資料庫遷移的現實需求。這也算是目前行業發展的一個小總結。

1。 背景:遷移之源,多變之秋

人生基本上就是兩件事,選題和解題。最好的人生是在每個關鍵點上,既選對題,又解好題。人生最大的痛苦在於解對了題,但選錯了題,而且還不知道自己選錯了題。正如人生最大的遺憾就是,不是你不行,而是你本可以。

❖ 資料規模大幅增加

近些年來,資訊資料呈快速增長態勢。如下圖所示,全球資料量總和,預計將從 2018 年的 33ZB 增至 2025年的 175ZB。國內資料體量在未來 7年將實現複合增速 30%以上的快速增長,並在 2025年成為與歐洲、中東、非洲、亞太和美國等地區相比體量最大的區域。資料的爆發式增長,導致對資料儲存容量、資料計算需求有個更好的要求,這也催生企業在基礎設施層面不斷革新,進而不斷推動資料庫向前進一步發展。

從資料庫市場來看,也驗證了這一趨勢。整體市場呈現穩定的發展趨勢,最近的資料表明,國內的資料庫市場已經達到200億規模。

❖ 開源方案,大行其道

開源資料庫,其原始碼具備全球共享、免費等特點,開發者可在其原始碼中修改或使用。在近一、二十年來,越來越多的企業將開源方案作為構建底層支援的可選答案。特別是隨著網際網路的興起,大量網際網路企業選擇使用了開源資料庫產品,也加速這些產品的成熟與發展。這其中MySQL、PostgreSQL、MongoDB 和 Redis 是當前開源資料庫最為重要的參與者。

❖ 資料上雲,大勢所趨

從2017至 2018年,整個資料庫市場增長了 18。4%,其中雲資料庫增長貢獻 68%。以AWS、Microsoft、Alibaba為代表的雲廠商,取得了快速發展,極大地重塑了全球供應商格局。國內網際網路科技巨頭,紛紛佈局資料庫產業,借力雲計算實現資料庫等基礎軟體領域的迭代與超越。如下圖的資料庫規模排名,雲資料庫廠商均取得不俗的增長,最新資料則更是如此。甚至有機構預測,今明兩年從資料庫部署形態上看,雲部署資料庫會超過傳統部署方式。

❖ 國產化趨勢明顯

正如下圖所示,國內資料庫市場仍然為歐美壟斷,但國產化趨勢已非常明顯。以國產自研或開源定製路線的廠商層出不求,從最新的調查結果來看,已經有130+的國產資料庫廠商初選。

從一葉扁舟到百舸爭流,傳統國產資料庫歷經長時間艱難探索,已逐步嶄露頭角。國外大廠長期壟斷國內資料庫市場。Oracle、IBM 和 Microsoft 等老牌廠商憑藉先發優勢在市場份額中佔據了有利地位。國產資料庫起步較晚,但潛力巨大。正如下圖可見,國產資料庫佔比正不斷增加。

❖ 總結:多種變化,驅動遷移

綜上所述,從資料規模體量的增大,到開源商業的變化,再到雲化趨勢明顯、國產化趨勢加劇;而這些變化都帶來同一個訴求,那就是資料庫遷移。展開來說,是如何完成異構資料庫遷移?完成體系架構完全不同的資料庫之間的遷移(例如從單機到分散式)?完成從線下到雲上的遷移?完成線上的、不終端業務的遷移?等等。諸多上述問題,對遷移提出了非常高的要求。本文下面嘗試從遷移的多個階段來闡述,需要哪些能力才能完成這一過程。

2。 資料庫遷移之路

人生基本上就是兩件事,選題和解題。最好的人生是在每個關鍵點上,既選對題,又解好題。人生最大的痛苦在於解對了題,但選錯了題,而且還不知道自己選錯了題。正如人生最大的遺憾就是,不是你不行,而是你本可以。

在實際的遷移中,是一個比較複雜的過程,可根據階段做個拆解。

1)。遷移評估階段

此階段是完成遷移前的評估,為後續遷移改造、遷移過程做好鋪墊工作

❖ 資料庫畫像

資料庫畫像結果,可為後續選型評估、架構規劃提供依據。

系統級

收集系統級資訊,包括但不限於硬體(CPU、MEM、NET、DISK)、作業系統(核心、引數、安全策略等)、效能(系統高峰期24小時負載)等

例項級

收集例項級資訊,包括但不限於架構(單機/叢集、版本等)、引數(資料庫引數等)、資料規模(表、索引等空間使用)、執行態資訊(如QPS、TPS、會話、事務等)

物件級

收集物件級資訊,包括但不限於結構資訊(表、分割槽、分片、索引、檢視、序列等)、統計資訊、訪問特徵(讀寫比、頻率等)、預警類(如大表、複雜結構、DBLink等)

語句級

收集語句級資訊,包括但不限於SQL文字(全量)、執行特徵(次數、響應時間等)、執行計劃。

應用級

收集複雜應用資訊,包括但不限於計算文字(如儲存過程、觸發器、函式等)、 執行特徵(次數、響應時間等)

❖ 應用畫像

應用畫像結果,為後面應用改造做好鋪墊。

應用拓撲

收集應用架構、應用與DB關係、應用訪問特徵等。

❖ 風險評估

針對上面收集的資料庫、應用畫像資訊,針對重點風險點做出評估。

資料庫架構

源庫使用叢集、分庫分表等架構,做出提示。

資料庫結構

源庫使用複雜結構(如分割槽表)、不支援結構(LOB、可更新檢視等),做出提示。

資料庫語句

源庫使用複雜SQL(如多表關聯)、特殊語法或方言等給出提示。

資料庫應用邏輯

源庫大量使用儲存過程、觸發器、函式等。

應用架構

應用使用何種訪問方式(如java、c、go等),對於某些舊有的方式予以提示。

效能維度

源庫存在明顯的效能訪問高峰,明顯的熱點物件。

規模維度

源端資料庫總體或單體物件規模較大的情況。

❖ 選型建議

根據上面收集資訊及風險評估內容,給出選型的建議。這裡存在幾個難點,一個是多目標資料庫的基礎能力抽象,一個是兩者的適配評估。功能上包括兩部分:

目標端建模

目標端在架構、結構、應用、效能指標等方面的基礎抽象。

評估適配建議

根據源端和目標端情況,結合風險及效能要求給出適配選型建議。

2)。遷移改造階段

❖ 物件改造

這一階段主要是透過結構對映及不相容提示,來減少改造工作量。

對映規範

適配多目標端給出結構對映規範。

結構改造

基於給定輸入,輸出改造後結構。可能存在非一一對應的情況,可根據源與目標的差異,異構改造。

不相容提示

對於不相容的情況,給出文字提示,人工介入。

❖ 語句改造

這一階段主要透過語句改寫,減少改造工作量;同時提供增強功能,滿足語句改造後的測試等需求。

SQL改造

基於給定輸入,給出改造後的語法。

不相容提示

對於不相容的情況,給出文字提示,人工介入。

增強-執行計劃對比

可對比兩邊執行計劃,方便研發最佳化語句寫法。

增強-效能對比

可對比兩邊執行效率,方便研發最佳化。此處需保證同等測試環境。

增強-SQL自主最佳化

提供最佳化改寫能力,而非基於簡單規則。此處需注意,語義等價性問題。

❖ 應用改造

此處應用是指資料內建的計算能力(如儲存過程等)。這一階段主要是透過邏輯改寫,減少人工工作量。在實現上,一般建議使用外部程式邏輯(如java)進行處理,而不是改造為目標端內部計算應用。原因是儘量減少資料庫耦合。此處,存在較多難點,且需要人工檢查改造後的語義是否正確。

應用改造

基於給定輸入,給出改造後的實現(推薦java)。

不相容提示

對於不相容的情況,給出文字提示,人工介入。

應用校驗

對比兩側的實現,驗證處理邏輯是否一致。

3)。遷移資料階段

❖ 全量/增量資料遷移

完成異構資料庫間的資料遷移工作。主要難點是效率、準確性。

全量遷移

增量資料遷移

基於指定時間戳後的增量遷移能力

增強-分拆、合併能力

支援一拆多,多合一遷移能力。

增強-遷移計算能力

支援在遷移實時計算能力(如lookup)。

增強-通用異構適配能力

統一遷移能力,不依賴某種庫。

增強-提供可配置UI

提供可配置同步介面,簡化操作。

增強-資料轉換能力

提供字符集、時區等轉換能力。

❖ 資料對比

見後面說明

4)。線上執行階段

❖ 資料同步

線上執行時,需提供資料庫端的異構同步能力,滿足業務隨時回遷的需求。

實時同步

提供異構資料庫間資料實時同步能力,難點在於大吞吐、實時性。

增強-細粒度同步

支援庫、使用者、表同步能力。

增強-同步計算能力

支援在同步的實時計算能力(如lookup) ,難點在於效率。

❖ 資料對比

資料對比,是使用者對比雙線執行的基本要求,需要滿足實時對比並兼顧效率。

異構對比

提供異構資料來源之間全量、增量資料對比能力。

增強-細粒度對比

支援庫、使用者、表、記錄級別對比能力。

增強-資料補差

提供差異資料的雙向補齊能力。

❖ 資料路由

資料路由,為業務提供統一資料庫訪問入口,並基於此提供雙路控制能力,可做到按流量、按讀寫、按訪問類別(生產、測試)等做資料訪問路由。

❖ 基礎運維

此部分的能力比較多,本質就是同時提供異構資料庫線上同步運維能力。例如包括統一變更、統一匯入匯出、統一授權、統一審計等。儘量從運維側角度來看,後面是一套邏輯庫。

上一篇:神農架出現驢頭狼?消失了數百萬年的動物,為什麼神農架又出現
下一篇:oppo find x3和小米11哪個好?網友:拍照好,拍照好,拍照好,你選哪個?