全部課程
發(fā)布時(shí)間: 2021-12-30 10:25:08
Oracle云平臺(tái)OCI推出的MySQL Database Service(簡(jiǎn)稱MDS)已經(jīng)有一段時(shí)間,除支持單機(jī)應(yīng)用外,也支持高可用架構(gòu),如下圖所示:
本文就使用Oracle GoldenGate(簡(jiǎn)稱OGG)從本地MySQL遷移到OCI MDS做一簡(jiǎn)單測(cè)試,以評(píng)估其可用性和效率??紤]到需要模擬一定的業(yè)務(wù)和相應(yīng)的數(shù)據(jù)量,故在此測(cè)試中,將使用benchmarksql 5生成10G左右的數(shù)據(jù)量,并通過(guò)GoldenGate初始化加載到MDS。
測(cè)試步驟概述
關(guān)于GoldenGate的初始化
利用GoldenGate,可以實(shí)現(xiàn)幾種形式的數(shù)據(jù)初始化,包括與數(shù)據(jù)庫(kù)工具集成、與ETL導(dǎo)數(shù)工具集成、或由GoldenGate生成文本后,再由DB加載工具完成初始化。
針對(duì)小數(shù)據(jù)量的系統(tǒng),也可用GoldenGate單獨(dú)完成初始化。
準(zhǔn)備本地環(huán)境
由于benchmarksql主要在Linux環(huán)境執(zhí)行,所以需要在本地Linux環(huán)境上部署一個(gè)MySQL數(shù)據(jù)庫(kù)。Benchmarksql的使用和加載數(shù)據(jù)到MySQL,可參考網(wǎng)上相關(guān)文章,本文不再贅述。
準(zhǔn)備OCI環(huán)境
云端的OCI MySQL Database Service,可以直接在OCI界面上申請(qǐng),OGG VM,可直接在OCI Marketplace中申請(qǐng),該VM負(fù)責(zé)接收本地上傳的數(shù)據(jù),并將數(shù)據(jù)寫(xiě)入到MDS中。在創(chuàng)建OGG VM時(shí),需要確保此VM的VCN和subnet與MDS的相同,否則該VM將無(wú)法訪問(wèn)創(chuàng)建的MDS。
網(wǎng)絡(luò)準(zhǔn)備
需要開(kāi)通本地到云端OGG VM之間7809-7815的端口,確保本地能連接到VM的這些端口。
最后,還需要設(shè)置OGG VM可以訪問(wèn) MDS的3306端口,以確保OGG能遠(yuǎn)程訪問(wèn)MDS。
創(chuàng)建測(cè)試表
參考Benchmarksql目錄下的run/sql.common/tableCreates.sql創(chuàng)建測(cè)試表。
由于在Benchmarksql 5.0中未包含對(duì)MySQL的支持,需要修改相應(yīng)語(yǔ)法才能執(zhí)行。
創(chuàng)建完成后的數(shù)據(jù)表如下:
?
加載初始化數(shù)據(jù)
Benchmarksql的屬性配置中,執(zhí)行一個(gè)warehouses加載,大約生成100M的數(shù)據(jù),所以我們需要設(shè)置warehouses=100,從而得到約10G的數(shù)據(jù),加載過(guò)程:
在Benchmarksql加載數(shù)據(jù)之前,可提前將GoldenGate的進(jìn)程配置好,這樣可以一邊加載一邊初始化到云端,類似于GoldenGate的增量抽取。由于我們是模擬生產(chǎn)系統(tǒng)的遷移,所以需要等待數(shù)據(jù)加載完成之后再啟動(dòng)GoldenGate的遷移。
加載完成之后,MySQL目錄所占空間大小如下:
可以看到,數(shù)據(jù)量約8.5G。
GoldenGate進(jìn)程配置
在源和目標(biāo)端數(shù)據(jù)庫(kù)上創(chuàng)建OGG用戶并賦權(quán)(略過(guò))。
配置OGG抽取和交付進(jìn)程。
本地初始化抽取進(jìn)程exinit.prm
云端交付進(jìn)程 rcord.prm
目標(biāo)端為了提升加載速度,采用coordinated replicate實(shí)現(xiàn)多進(jìn)程同時(shí)寫(xiě)入,經(jīng)測(cè)試,在性能上比單進(jìn)程有60%的提升。
啟動(dòng)GoldenGate進(jìn)程
先啟動(dòng)兩端OGG的MGR進(jìn)程,再啟動(dòng)初始化抽取,可以看到在云端的目錄下會(huì)有相應(yīng)的隊(duì)列文件生成,此時(shí),啟動(dòng)云端的交付進(jìn)程即可。
抽取完成之后,目標(biāo)端的隊(duì)列文件約占14G空間,比表里的實(shí)際數(shù)據(jù)所占空間要大,主要是因?yàn)槊織l記錄都有相應(yīng)的控制信息,字段數(shù)越少,控制信息所在比例越大。
本地抽取進(jìn)程日志,本地抽取可以實(shí)現(xiàn)上萬(wàn)條的速率,如果是物理機(jī),抽取速度應(yīng)該會(huì)更快。
云端交付進(jìn)程日志
初始化完成
采用上述方法初始化,當(dāng)初始化進(jìn)程抽取完成之后,進(jìn)程會(huì)自動(dòng)停止。
從日志中,我們可以看到抽取進(jìn)程從抽取到傳輸完成,大約花了30分鐘。
從云端的交付進(jìn)程日志,我們可以看到,交付進(jìn)程耗時(shí)約1小時(shí)30分鐘。
小結(jié)
以上測(cè)試中,本地VM的內(nèi)存為8G,與云端連接時(shí),使用電信普通寬帶;云端OGG VM分別驗(yàn)證了16G和32G內(nèi)存,遷移時(shí)間相差不大。
測(cè)試過(guò)程中的一些指標(biāo)如下:
綜合本文測(cè)試可以看到,針對(duì)普通數(shù)據(jù)庫(kù)的遷移上云,可直接通過(guò)OGG完成數(shù)據(jù)的抽取、傳輸和寫(xiě)入,如果同時(shí)還需要增量數(shù)據(jù)實(shí)時(shí)同步,在現(xiàn)有初始化參數(shù)上做些簡(jiǎn)單修改即可復(fù)用;在上述測(cè)試中,OGG在傳輸時(shí)進(jìn)行了數(shù)據(jù)壓縮,即使在Internet網(wǎng)絡(luò)環(huán)境下,OGG的傳輸效率也可圈可點(diǎn)。
在本地?cái)?shù)據(jù)量小于100G的情況下,可采用OGG直接遷移上云,如果本地?cái)?shù)據(jù)量較大,且網(wǎng)絡(luò)不穩(wěn)定,建議將抽取和傳輸拆分為兩個(gè)進(jìn)程,以確保網(wǎng)絡(luò)中斷不影響抽取;最后,OGG也支持異構(gòu)數(shù)據(jù)庫(kù)的遷移,比如從SQL Server遷移到Oracle,或從MySQL遷移到PostgreSQL。
在企業(yè)上云的過(guò)程中,利用好GoldenGate這把瑞士軍刀,將會(huì)使企業(yè)的遷移效率事半功倍。
上一篇: 疫情期間HCIA/HCIP/HCIE 證書(shū)續(xù)認(rèn)證及HCIE實(shí)驗(yàn)延期政策
下一篇: 邏輯交換機(jī)的運(yùn)作方式