【數(shù)據(jù)庫(kù)遷移系列】從MySQL到openGauss的數(shù)據(jù)庫(kù)對(duì)象遷移實(shí)踐
9月30日新發(fā)布的openGauss 3.1.0版本 ,工具的全量遷移和增量遷移的性能不但有了全面提升,而且支持?jǐn)?shù)據(jù)庫(kù)對(duì)象視圖、觸發(fā)器、自定義函數(shù)、存儲(chǔ)過(guò)程的遷移。
工具鏈:MySQL全量遷移支持并行遷移,提升全量遷移性能
通過(guò)支持表級(jí)并行遷移,提升MySQL全量遷移性能,基于sysbench測(cè)試模型,在Kunpeng-920 2p服務(wù)器上,10張表(單表容量三百萬(wàn)以上)使用10并發(fā)遷移,可達(dá)到大于300M/s的遷移性能。
工具鏈:MySQL增量遷移支持十五級(jí)并行消費(fèi),提升增量遷移性能
基于開源三方件mysql-binlog-connector-java解析mysql的binlog, 并根據(jù)mysql主備進(jìn)行復(fù)制的原理,對(duì)可并行的事務(wù)在openGauss端采用多線程進(jìn)行并行回放,以實(shí)現(xiàn)MySQL到openGauss的在線遷移。
利用sysbench對(duì)MySQL壓測(cè),在10張表30個(gè)線程并發(fā)情況下,IUD混合場(chǎng)景下,在Kunpeng-920 2p服務(wù)器上測(cè)試整體增量遷移性能可達(dá)3w tps.
工具鏈:支持基于默克爾樹的數(shù)據(jù)校
實(shí)現(xiàn)基于默克爾樹的數(shù)據(jù)實(shí)時(shí)校驗(yàn)工具,支持MySQL數(shù)據(jù)遷移到openGauss時(shí),源端與目的端數(shù)據(jù)全量和增量校驗(yàn)。
本篇就來(lái)分享一下使用chameleon工具進(jìn)行從MySQL到openGauss的數(shù)據(jù)庫(kù)對(duì)象遷移實(shí)踐。
軟件安裝
1. 由于我之前已經(jīng)安裝過(guò)3.0版本的工具了,需要先卸載一下。
2.從官網(wǎng)https://opengauss.org/zh/supporttools.html?獲取獲取工具包:chameleon-3.1.0-py3-none-any.whl

3.將新的3.1.0工具上傳到openGauss數(shù)據(jù)庫(kù)所在節(jié)點(diǎn)的chameleon文件夾下。
最后提示“Successfully installed chameleon-3.1.0”說(shuō)明安裝成功。
4. 設(shè)置配置文件。這里繼續(xù)使用之前已經(jīng)配置好的 default.yml.
切換到omm 用戶進(jìn)行操作。
數(shù)據(jù)庫(kù)對(duì)象遷移測(cè)試
初始化遷移過(guò)程
除了基礎(chǔ)數(shù)據(jù)同步,chameleon還支持將視圖、觸發(fā)器、自定義函數(shù)、存儲(chǔ)過(guò)程從MySQL遷移到openGauss。以下四個(gè)命令無(wú)先后之分。若不想日志輸出到控制臺(tái),可去掉--debug參數(shù)。
復(fù)制視圖:
chameleon start_view_replica --config default --source mysql --debug
復(fù)制觸發(fā)器:
chameleon start_trigger_replica --config default --source mysql --debug
復(fù)制自定義函數(shù):
chameleon start_func_replica --config default --source mysql --debug
復(fù)制存儲(chǔ)過(guò)程:
chameleon start_proc_replica --config default --source mysql --debug
此外,工具還提供了可以在對(duì)象遷移信息表sch_chameleon.t_replica_object中查看遷移對(duì)象的記錄能力。下表展示了t_replica_object表的字段說(shuō)明。

視圖遷移
1. mysql 構(gòu)造視圖數(shù)據(jù)。

2. 工具執(zhí)行視圖遷移命令
chameleon start_view_replica --config default --source mysql --debug

3.在openGauss側(cè)查詢視圖,遷移成功。注意查詢的時(shí)候需要攜帶schema:mysql_db1_sch,視圖名稱和mysql 中定義的一致,都是test1_view。

觸發(fā)器遷移
1.mysql 構(gòu)造如下觸發(fā)器:每刪除一條test1中的數(shù)據(jù),就向test2表中插入一條記錄。
2.工具執(zhí)行命令,成功
chameleon start_trigger_replica --config default --source mysql --debug

3.openGauss側(cè)測(cè)試觸發(fā)器
從測(cè)試結(jié)果來(lái)看,觸發(fā)器是直接生效的,test2中已經(jīng)成功插入了數(shù)據(jù)。


自定義函數(shù)遷移
1. 在MySQL側(cè)構(gòu)造了兩個(gè)簡(jiǎn)單的函數(shù)。
2. 啟動(dòng)遷移操作,如下圖所示,總共兩個(gè),成功兩個(gè)。
chameleon start_func_replica --config default --source mysql --debug

3. openGauss側(cè)直接測(cè)試函數(shù)調(diào)用,也是OK的。注意攜帶schema。

存儲(chǔ)過(guò)程遷移
1. 在MySQL側(cè)構(gòu)造了一個(gè)簡(jiǎn)單的存儲(chǔ)過(guò)程。
2. 工具側(cè)執(zhí)行遷移,提示總共一個(gè),成功一個(gè)。
chameleon start_proc_replica --config default --source mysql --debug

3.openGauss直接測(cè)試調(diào)用,也是OK的。

Q&A
1、遷移數(shù)據(jù)庫(kù)對(duì)象過(guò)程中報(bào)類似錯(cuò)誤“‘replica_engine’ object has no attribute ”
這個(gè)錯(cuò)誤的話是工具3.0.0之前版本還不支持 ,請(qǐng)確認(rèn)工具版本是3.1.0。
2、遷移觸發(fā)器限制
工具執(zhí)行遷移命令 ,結(jié)果失敗了。
openGauss不支持這種變量名加@,因此,實(shí)際遷移前需要仔細(xì)查看工具使用約束。