Oracle 遷移至 MySQL 的過程中遇到的一些問題及想法
【前言】
近年來,各大行業去O運動愈演愈烈,一方面是基於對資料庫安全可控的考慮,另一方面分散式資料庫逐漸佔據了OLTP領域較大的市場,尤其在網際網路領域,MySQL、PG等分散式資料庫的應用非常廣泛。
在進行Oracle向MySQL遷移時會遇到很多難點,那麼,從Oracle遷移至MySQL會遇到哪些問題?這些問題是否能順利解決?
一、為什麼是MySQL?
MySQL具備如下優勢:
豐富的實踐經驗和蓬勃生態,阿里等行業巨頭已成功地使用MySQL替換Oracle並支撐了龐大的業務。
支援行鎖和事務的Innodb儲存引擎越來越強大,對於高併發下OLTP優勢明顯;
靈活的邏輯複製搭建主從可以在架構設計上有更多的空間。
豐富的開源中介軟體搭配MySQL可以提供更高的業務需求。
二、Oracle資料能否無損遷移至MYSQL資料庫?
首先需要非常熟悉MySQL和Oracle的差別,如果單純的考慮表的資料,那麼需要詳細對比不同資料的欄位型別的相容性。遷移前需要梳理清楚,應該就不會有太大問題。
另外需要考慮遷移後的維護問題,高可用的方案,而不是單純的說無損遷移。
DSG的同步軟體也能進行資料的遷移,但是在實際使用中,用DSG的來做全庫的初始化效率稍微有點差。
三、Oracle資料庫遷移至MYSQL過程中如何保障系統穩定性?
很大程度上取決於能多大程度上接受業務中斷。
正式遷移前需要反覆測試、試執行,儘可能保證正式遷移穩、準、快。如果業務允許可以嘗試切割方式,分幾次遷移,兩邊都同步執行一小段時間。
也可以在應用層面控制資料一致性,通過應用雙寫,確保異構資料庫都能執行正常,最後停掉遷移之前的DB。
四、資料一致性還比較容易保證,業務邏輯(儲存過程、觸發器、自定義函式等)方面如何改造,相容性如何保障?
遵循以下原則:
六、Oracle與 MySQL的 SQL語法有很多不相容的地方,有哪些合適的工具可以快速完成 SQL的轉換?
MySQL語法要完全相容Oracle的語法是一件非常困難的事,目前業內相容Oracle做的比較好的應該是EDB了。
阿里雲號稱相容Oracle的PPAS實際上就是EDB,從實際的測試來看,也還是有很多不盡如人意的地方。
所以想完全實現自動轉換,基本上沒這個可能。不過部分的相容是可以實現的,
七、Oracle與mysql 有些語法、資料型別等略有不同,遷移過去後是否必須要逐條修正?
遷移前期,Oracle 與 MySQL的 SQL語法相容性,資料型別間的對映關係就要提前測試驗證好。
原則就是在測試環境使用準生產資料進行不斷地遷移演練,不斷改善遷移中越到的類似問題。
八、Oracle資料庫遷移至MySQL資料庫後,上層應用是否需要修改,修改的方面有哪些?
是否需要修改以及修改哪些內容,這些都非常依賴目前應用是如何使用Oracle的。
不管什麼業務和使用情況,都需要修改幾點是:
1.資料型別。Oracle和MySQL不一樣的地方。
2.訪問資料來源驅動。譬如JDBC。
3.部分SQL寫法。
九、Oracle資料庫遷移至MySQL資料庫後,還能逆向回遷至Oracle資料庫麼?
理論上和實踐上都是可以的。