热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

借助GoldenGate迁移本地MySQL上云

Oracle云平台OCI推出的MySQLDatabaseService(简称MDS)已经有一段时间,除支持单机应用外

引言

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这把瑞士军刀,将会使企业的迁移效率事半功倍。


作者简介

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









推荐阅读
author-avatar
手机用户2602918007
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有