一、Oracle遷移MySQL需要考慮什么
1、遷移類型
Oracle遷移到MySQL主要涉及數據結構遷移、數據遷移、業務遷移這三類,我們需要考慮如下幾個難點:
數據類型差異導致數據結構遷移過程中需要進行改造和處理;
數據遷移中 Oracle LOB字段、null值和’’值以及遷移方式為遷移難點。
業務遷移中由于MySQL不支持并行、不支持物化視圖,會涉及到存儲過程改造,同義詞改造,DBlink、sequence、分區表以及復雜sql語句的改造。
2、遷移流程
我們需要整理一個完整的遷移流程:1、確定遷移范圍;2、遷移評估;3、選擇遷移方式;4、遷移驗證,以此來確保遷移工作的進展和順利完成。
1)確定遷移范圍
從Oracle遷移到MySQL是一項昂貴且耗時的任務,重要的是要了解要遷移的范圍,不要浪費時間來遷移不再需要的對象。另外,檢查是否需要遷移所有的歷史數據,不要浪費時間來復制不需要的數據,例如過去維護中的備份數據和臨時表。
2)遷移評估
經過初步檢查后,遷移的名列前茅步是分析應用程序和數據庫對象,找出兩個數據庫之間不兼容的特性,并估算遷移所需的時間和成本。例如由于Oracle與MySQL之間數據結構存在差異,且MySQL不支持并行、不支持物化視圖、8.0以上才支持函數索引,可能涉及到存儲過程改造,同義詞改造,DBlink、sequence、分區表以及復雜sql語句的改造等工作。
3)遷移方式
通過對遷移所需時間和成本選擇不同的遷移方法或者工具進行遷移,可以分為實時復制(例如利用GoldenGate實時同步數據使業務影響時間最小),或者一次性加載(例如采用 Oracle將數據表導出到csv文件后,通過load或者mysqlsh工具導入到MySQL中)。
4)驗證測試
測試整個應用程序和遷移的數據庫非常重要,因為兩個數據庫中的某些功能相同,但是實現方式和機制卻是不同的。我們需要做充分的驗證測試:
檢查是否正確轉換了所有對象;
檢查所有DML是否正常工作;
在兩個數據庫中加載樣本數據并檢查結果,比如來自兩個數據庫的SQL結果應該相同;
檢查DML及查詢SQL的性能,并在必要時進行SQL改造。
延伸閱讀:
二、為什么要遷移到MySQL
要回答這個問題,其實我們的主線就是MySQL可以做什么。
還是成本,開源免費,方便定制,MySQL的可選方案可絕對不只有社區版,還有一系列的分支,比如Percona分支,MariaDB分支,存儲引擎InnoDB,MyRocks等統統都是免費可選。
第二是MySQL效率高,足夠輕量級。MySQL的效率從使用上來說,學習周期會很短,容易上手,而且對于系統的資源要求不高。
第三是水平擴展能力,把Oracle比作地鐵,MySQL比作公交車會更容易理解,我們可以很輕松的加開公交專線,但是加開地鐵線路那就完全不同了。我覺得這是遷移到MySQL的一個核心點,這也就是為什么很多互聯網的MySQL規模動輒幾百幾千了,爆發式增長的業務,MySQL擴展能力了不是體現在MySQL數據庫本身,而是對于架構的擴展性上,而這也就是為什么很多MySQL DBA比較貴的一個原因。
第四是復制,這是MySQL相比Oracle的一個亮點,如果需要做跨數據中心的復制,允許存在一定的延遲,使用MySQL原生的復制方案是一件很容易的事情,MySQL支持很多不同維度的復制方案。
第五是業務輕依賴,這個可以分為兩個維度來說。一個是功能限制,一個是性能限制。這本身是MySQL功能和性能上的缺失,但是反而是一個優點因為要支撐分布式需求,需要業務對數據庫的依賴要更輕巧一些,原本支持不好的存儲過程就可以很自然的弱化了。
第六是開源帶來的生態體系,開源紅利帶給企業的是很多的技術方案選擇,讓原本需要花錢買的事情變成了我們干我們用。