Oracle到PostgreSQL的不停機數(shù)據(jù)庫遷移的流程步驟
1970 年,數(shù)據(jù)庫之父 Edgar Frank Codd 發(fā)表了“數(shù)據(jù)的關(guān)系模型”論文,該論文為往后的關(guān)系型數(shù)據(jù)庫的發(fā)展奠定了基礎(chǔ)。1979 年,基于關(guān)系模型理論的數(shù)據(jù)庫產(chǎn)品 Oracle 2 首次亮相,并在過去的三四十年時間里,橫掃全球數(shù)據(jù)庫市場。
時間到了 1989 年,Oracle 進軍中國市場,場面幾乎也是 Oracle 一家獨大,大部分大型企業(yè)都被 Oracle 占領(lǐng)。Oracle 功能強大,運行穩(wěn)定的背后,是其高額的授權(quán)費用。盡管如此,由于 Oracle 的黏性實在太強,在沒有替代方案的情況下,接下來的相當長一段年月里,企業(yè)也都只能乖乖掏錢。
時至今日,情況已經(jīng)發(fā)生了翻天覆地的變化,替代方案層出不窮,PostgreSQL 作為其中的一員,除了兼具多樣功能和強大性能之外,還具備非常優(yōu)秀的可擴展性,可以較好地兼容 Oracle,企業(yè)也可以從長期活躍的開源社區(qū)中得到豐富的資源和技術(shù)支持,最重要的是,PostgreSQL 是開源軟件,無需支付高昂的授權(quán)費用,這可以為企業(yè)省下不小的支出。因此,Oracle 到 PostgreSQL 的遷移成了眾多企業(yè)的首選。
然而,Oracle 到 PostgreSQL 的遷移并不是說遷就能遷的,有很多不得不解決的問題。
Oracle 遷移到 PostgreSQL 不得不解決的問題
業(yè)務(wù)的可用性:遷移必須在不影響業(yè)務(wù)的前提下進行,換句話說,遷移時不能停機,那需要考慮的事情就非常多了:存量和增量數(shù)據(jù)如何完整遷移?如何處理遷移時的性能波動?如何實現(xiàn)應(yīng)用程序的平滑切換?等等。
表的初始化:在同步數(shù)據(jù)之前,需要手動在 PostgreSQL 端創(chuàng)建和源端一致的表結(jié)構(gòu),然后才能從源端接收數(shù)據(jù)。當源端有大量表且表結(jié)構(gòu)很復(fù)雜的情況下,工作量非常大。
數(shù)據(jù)結(jié)構(gòu)的映射:兩者數(shù)據(jù)結(jié)構(gòu)不同,怎么確保數(shù)據(jù)從源端同步過來后的完整性?除非你對兩者的數(shù)據(jù)模型的理解非常極致,且保證絕對不出錯,才能達到理想的結(jié)果。
源端 DDL 語句的聯(lián)動:如何保證源端的數(shù)據(jù)結(jié)構(gòu)發(fā)生變化時,同步鏈路不中斷?那就需要實時捕獲源端 Oracle 的 DDL 變更,并及時在目標端的 PostgreSQL 中同步執(zhí)行。
這些問題如果可以順利解決,遷移工作將會相當絲滑。那么如何解決呢?方法自然是有的。對于上述 4 個問題,NineData 有絕對的發(fā)言權(quán),我們先來看看它是如何解決這些問題的:
遷移過程不停機:在不影響源端業(yè)務(wù)的情況下,進行全量和增量數(shù)據(jù)的遷移,保證源和目標的一致性,并在遷移完成后實施無縫切換。
結(jié)構(gòu)復(fù)制:基于目標端數(shù)據(jù)源的特性,自動高效地完成表的創(chuàng)建、數(shù)據(jù)結(jié)構(gòu)的映射等工作。
復(fù)制性能:基于動態(tài)攢批、并行復(fù)制、Stream Load 等技術(shù),復(fù)制性能輕松達到 200 MB/S。
DDL 捕獲與執(zhí)行:實時檢測源端中的 DDL 操作,并同步在目標端中執(zhí)行,保證其他業(yè)務(wù)變更能夠穩(wěn)定地進行。
輕松解決且非常愉快,下面來看看怎么操作。
步驟一:錄入源和目標數(shù)據(jù)源
登錄 NineData 控制臺,單擊數(shù)據(jù)源管理>數(shù)據(jù)源,然后在頁面中單擊創(chuàng)建數(shù)據(jù)源,選擇需要錄入的數(shù)據(jù)源。
根據(jù)頁面提示進行配置,然后單擊創(chuàng)建數(shù)據(jù)源完成創(chuàng)建。
步驟二:配置同步鏈路
登錄 NineData 控制臺,單擊數(shù)據(jù)復(fù)制>數(shù)據(jù)復(fù)制,然后單擊創(chuàng)建復(fù)制。
根據(jù)頁面提示配置復(fù)制任務(wù),由于我們需要不停機遷移,需要在復(fù)制類型處勾選增量復(fù)制。
配置完成后啟動任務(wù),針對您配置的所有遷移對象,NineData 會先對所有的存量數(shù)據(jù)進行全量遷移,接下來就是實時同步 Oracle 中新增的增量數(shù)據(jù),所有新寫入的數(shù)據(jù)都將一條不漏地同步到 PostgreSQL,每當目標端的增量數(shù)據(jù)追平源端時,任務(wù)面板中會顯示延遲 0 秒,如下圖所示。
步驟三(可選):校驗?zāi)繕硕送綌?shù)據(jù)的完整性
除了同步功能以外,NineData 還提供了同步后源端和目標端同步數(shù)據(jù)的對比功能,以確保目標端數(shù)據(jù)的完整性。
登錄 NineData 控制臺,單擊數(shù)據(jù)復(fù)制>數(shù)據(jù)復(fù)制,然后單擊步驟二中創(chuàng)建的復(fù)制任務(wù) ID。
單擊數(shù)據(jù)對比頁簽,并單擊開啟數(shù)據(jù)對比(如果步驟二的任務(wù)配置中已勾選開啟數(shù)據(jù)一致性對比,則此處直接展示對比結(jié)果)。
提示
開啟后,系統(tǒng)將自動對比源端和目標端的同步對象,并給出對比結(jié)果。
您可以在一段時間后,單擊頁面中的重新對比,校驗最新增量數(shù)據(jù)的結(jié)果。
步驟四(可選):配置任務(wù)異常告警
由于是增量遷移任務(wù),您可能需要系統(tǒng)實時監(jiān)控任務(wù)狀態(tài),在任務(wù)有異常時即刻通知您。
登錄 NineData 控制臺,單擊數(shù)據(jù)復(fù)制>數(shù)據(jù)復(fù)制,然后單擊步驟二中創(chuàng)建的復(fù)制任務(wù) ID。
單擊右上角的配置告警。
輸入策略名稱,單擊保存配置即可。您可以直接使用內(nèi)置的默認規(guī)則,在任務(wù)運行失敗,或復(fù)制延遲大于等于 10 分鐘的時候,發(fā)送短信提醒您。您也可以自定義創(chuàng)建規(guī)則,根據(jù)您的需求來進行通知。
最后
在 NineData 將所有數(shù)據(jù)遷移到 PostgreSQL 之后(延遲為 0),最后一步是在業(yè)務(wù)低峰期,將業(yè)務(wù)流量切換至 PostgreSQL,即可完成整個 Oracle 到 PostgreSQL 的遷移。這個切換過程是非常關(guān)鍵,需要謹慎規(guī)劃執(zhí)行。
以上就是Oracle到PostgreSQL的不停機數(shù)據(jù)庫遷移的流程步驟的詳細內(nèi)容,更多關(guān)于Oracle到PostgreSQL數(shù)據(jù)庫遷移的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
關(guān)于sql腳本導(dǎo)入Oracle時重復(fù)生成check約束的問題解決
這篇文章主要給大家介紹了關(guān)于sql腳本導(dǎo)入Oracle時重復(fù)生成check約束的問題解決方法,文中給出了詳細的檢查步驟,對大家理解和解決這個問題具有很好的幫助,需要的朋友們下面來一起看看吧。2017-05-05oracle數(shù)據(jù)庫實現(xiàn)獲取時間戳的無參函數(shù)
這篇文章主要介紹了oracle數(shù)據(jù)庫實現(xiàn)獲取時間戳的無參函數(shù)的實例代碼,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下2018-08-08Oracle創(chuàng)建和管理分區(qū)索引的操作方法
創(chuàng)建和管理分區(qū)索引(Partitioned Index)是數(shù)據(jù)庫管理中的重要任務(wù),特別是在處理大規(guī)模數(shù)據(jù)集時,以下是如何在Oracle數(shù)據(jù)庫中創(chuàng)建和管理分區(qū)索引的詳細步驟和示例代碼,感興趣的朋友一起看看吧2024-08-08使用sqlplus連接Oracle數(shù)據(jù)庫問題
這篇文章主要介紹了使用sqlplus連接Oracle數(shù)據(jù)庫問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-12-12