集团站切换校区

验证码已发送,请查收短信

复制成功
微信号:togogoi
添加微信好友, 详细了解课程
已复制成功,如果自动跳转微信失败,请前往微信添加好友
打开微信
图标

业界新闻

当前位置:首页 > >业界新闻 > >

借助GoldenGate迁移本地MySQL上云

发布时间: 2021-12-30 10:25:08

Oracle云平台OCI推出的MySQL Database Service(简称MDS)已经有一段时间,除支持单机应用外,也支持高可用架构,如下图所示:



本文就使用Oracle GoldenGate(简称OGG)从本地MySQL迁移到OCI MDS做一简单测试,以评估其可用性和效率。考虑到需要模拟一定的业务和相应的数据量,故在此测试中,将使用benchmarksql 5生成10G左右的数据量,并通过GoldenGate初始化加载到MDS。


测试步骤概述


  • 在本地环境准备benchmarksql的测试环境
  • 准备云端环境
  • 在源和目标数据库上准备测试benchmarksql测试表
  • 使用benchmarksql在本地加载初始数据
  • 配置OGG的初始化进程,包括抽取、传输和目标端的投递进程。为了提升迁移效率,在本次测试中,存量数据将不会在本地落盘,抽取进程从本地库读取之后直接传输到云端
  • 启动GoldenGate初始化和交付进程,观察初始化过程中的资源占用和性能表现
  • 查看目标端数据是否与源端一致,并检查迁移上云花费的时间。


关于GoldenGate的初始化


利用GoldenGate,可以实现几种形式的数据初始化,包括与数据库工具集成、与ETL导数工具集成、或由GoldenGate生成文本后,再由DB加载工具完成初始化。


针对小数据量的系统,也可用GoldenGate单独完成初始化。


准备本地环境


由于benchmarksql主要在Linux环境执行,所以需要在本地Linux环境上部署一个MySQL数据库。Benchmarksql的使用和加载数据到MySQL,可参考网上相关文章,本文不再赘述。


准备OCI环境


云端的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。


GoldenGate进程配置


在源和目标端数据库上创建OGG用户并赋权(略过)。


配置OGG抽取和交付进程。


本地初始化抽取进程exinit.prm


云端交付进程 rcord.prm


目标端为了提升加载速度,采用coordinated replicate实现多进程同时写入,经测试,在性能上比单进程有60%的提升。


启动GoldenGate进程


先启动两端OGG的MGR进程,再启动初始化抽取,可以看到在云端的目录下会有相应的队列文件生成,此时,启动云端的交付进程即可。


抽取完成之后,目标端的队列文件约占14G空间,比表里的实际数据所占空间要大,主要是因为每条记录都有相应的控制信息,字段数越少,控制信息所在比例越大。


本地抽取进程日志,本地抽取可以实现上万条的速率,如果是物理机,抽取速度应该会更快。


云端交付进程日志




初始化完成


采用上述方法初始化,当初始化进程抽取完成之后,进程会自动停止。


从日志中,我们可以看到抽取进程从抽取到传输完成,大约花了30分钟。


从云端的交付进程日志,我们可以看到,交付进程耗时约1小时30分钟。


小结


以上测试中,本地VM的内存为8G,与云端连接时,使用电信普通宽带;云端OGG VM分别验证了16G和32G内存,迁移时间相差不大。


测试过程中的一些指标如下:



综合本文测试可以看到,针对普通数据库的迁移上云,可直接通过OGG完成数据的抽取、传输和写入,如果同时还需要增量数据实时同步,在现有初始化参数上做些简单修改即可复用;在上述测试中,OGG在传输时进行了数据压缩,即使在Internet网络环境下,OGG的传输效率也可圈可点。


在本地数据量小于100G的情况下,可采用OGG直接迁移上云,如果本地数据量较大,且网络不稳定,建议将抽取和传输拆分为两个进程,以确保网络中断不影响抽取;最后,OGG也支持异构数据库的迁移,比如从SQL Server迁移到Oracle,或从MySQL迁移到PostgreSQL。


在企业上云的过程中,利用好GoldenGate这把瑞士军刀,将会使企业的迁移效率事半功倍。

上一篇: 疫情期间HCIA/HCIP/HCIE 证书续认证及HCIE实验延期政策

下一篇: 逻辑交换机的运作方式

在线咨询 ×

您好,请问有什么可以帮您?我们将竭诚提供最优质服务!