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