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