本文就使用Oracle GoldenGate(简称OGG)从本地MySQL迁移到OCI MDS做一简单测试,以评估其可用性和效率。考虑到需要模拟一定的业务和相应的数据量,故在此测试中,将使用benchmarksql 5生成10G左右的数据量,并通过GoldenGate初始化加载到MDS。
在本地环境准备benchmarksql的测试环境
准备云端环境
在源和目标数据库上准备测试benchmarksql测试表
使用benchmarksql在本地加载初始数据
配置OGG的初始化进程,包括抽取、传输和目标端的投递进程。为了提升迁移效率,在本次测试中,存量数据将不会在本地落盘,抽取进程从本地库读取之后直接传输到云端
启动GoldenGate初始化和交付进程,观察初始化过程中的资源占用和性能表现
查看目标端数据是否与源端一致,并检查迁移上云花费的时间。
利用GoldenGate,可以实现几种形式的数据初始化,包括与数据库工具集成、与ETL导数工具集成、或由GoldenGate生成文本后,再由DB加载工具完成初始化。
针对小数据量的系统,也可用GoldenGate单独完成初始化。
由于benchmarksql主要在Linux环境执行,所以需要在本地Linux环境上部署一个MySQL数据库。Benchmarksql的使用和加载数据到MySQL,可参考网上相关文章,本文不再赘述。
云端的OCI MySQL Database Service,可以直接在OCI界面上申请,如下:
OGG VM,可直接在OCI Marketplace中申请,该VM负责接收本地上传的数据,并将数据写入到MDS中。在创建OGG VM时,需要确保此VM的VCN和subnet与MDS的相同,否则该VM将无法访问创建的MDS。
需要开通本地到云端OGG VM之间7809-7815的端口,确保本地能连接到VM的这些端口。
最后,还需要设置OGG VM可以访问 MDS的3306端口,以确保OGG能远程访问MDS。
参考Benchmarksql目录下的run/sql.common/tableCreates.sql创建测试表。
由于在Benchmarksql 5.0中未包含对MySQL的支持,需要修改相应语法才能执行。
创建完成后的数据表如下:
Benchmarksql的属性配置中,执行一个warehouses加载,大约生成100M的数据,所以我们需要设置warehouses=100,从而得到约10G的数据,加载过程:
在Benchmarksql加载数据之前,可提前将GoldenGate的进程配置好,这样可以一边加载一边初始化到云端,类似于GoldenGate的增量抽取。由于我们是模拟生产系统的迁移,所以需要等待数据加载完成之后再启动GoldenGate的迁移。
加载完成之后,MySQL目录所占空间大小如下:
可以看到,数据量约8.5G。
在源和目标端数据库上创建OGG用户并赋权(略过)。
配置OGG抽取和交付进程。
本地初始化抽取进程exinit.prm
云端交付进程 rcord.prm
目标端为了提升加载速度,采用coordinated replicate实现多进程同时写入,经测试,在性能上比单进程有60%的提升。
先启动两端OGG的MGR进程,再启动初始化抽取,可以看到在云端的目录下会有相应的队列文件生成,此时,启动云端的交付进程即可。
抽取完成之后,目标端的队列文件约占14G空间,比表里的实际数据所占空间要大,主要是因为每条记录都有相应的控制信息,字段数越少,控制信息所在比例越大。
本地抽取进程日志,本地抽取可以实现上万条的速率,如果是物理机,抽取速度应该会更快。
云端交付进程日志
采用上述方法初始化,当初始化进程抽取完成之后,进程会自动停止。
从日志中,我们可以看到抽取进程从抽取到传输完成,大约花了30分钟。
从云端的交付进程日志,我们可以看到,交付进程耗时约1小时30分钟。
启动时间:
交付结束时间
测试过程中的一些指标如下:
综合本文测试可以看到,针对普通数据库的迁移上云,可直接通过OGG完成数据的抽取、传输和写入,如果同时还需要增量数据实时同步,在现有初始化参数上做些简单修改即可复用;在上述测试中,OGG在传输时进行了数据压缩,即使在Internet网络环境下,OGG的传输效率也可圈可点。
在本地数据量小于100G的情况下,可采用OGG直接迁移上云,如果本地数据量较大,且网络不稳定,建议将抽取和传输拆分为两个进程,以确保网络中断不影响抽取;最后,OGG也支持异构数据库的迁移,比如从SQL Server迁移到Oracle,或从MySQL迁移到PostgreSQL。
在企业上云的过程中,利用好GoldenGate这把瑞士军刀,将会使企业的迁移效率事半功倍。

作者简介
蔡东林,甲骨文云平台数据集成资深咨询顾问,专注于甲骨文数据集成相关产品及解决方案。具有15+年的数据仓库、数据处理经验,熟悉甲骨文相关集成产品,方案和项目实施经验。熟悉电信,银行行业。您可以通过donglin.cai@oracle.com与他联系。