Loading
0

GoldenGate 之 Mysql to Oracle

 

之前我已经写过了几篇GoldenGate的基础概念以及同构、异构部署,单、双向复制的文章,所以在这里一些理论和概念上的细节不再过多阐述和解释,如有疑问可参考我之前的几篇关于GoldenGate概念和部署的文章,以下是传送门:

Oracle Goldengate 基础知识概念

Oracle GoldenGate Capture Method

Goldengate Oracle--Oracle 单向复制Change Synchronization安装部署

Oracle GoldenGate Oracle—Oracle 双向复制

Oracle GoldenGate 之初始化加载数据

GoldenGate 之 Oracle to Mysql

 

下面直接进入部署过程。

实验环境

操作系统:Oracle Enterprise Linux 6.3 x86_64

OGG for Oracle版本:V11.2.1.0.14 FOR ORACLE 11G on Linux x86_64

下载地址:https://updates.oracle.com/Orion/Services/download/p17556008_1121014_Linux-x86-64.zip?aru=16952255&patch_file=p17556008_1121014_Linux-x86-64.zip

OGG for Mysql版本:V11.2.1.0.13 FOR MYSQL on Linux x86_64

下载地址:https://updates.oracle.com/Orion/Services/download/p17418637_1121013_Linux-x86-64.zip?aru=16888156&patch_file=p17418637_1121013_Linux-x86-64.zip

Oracle 数据库版本:11.2.0.4.0 – 64bit

Mysql 数据库版本:5.5.34 – 64bit

5.0版本以下的Mysql OGG不支持,5.6版本需要12.1.2版本的OGG才支持,我想现在主流的还是11GR2版本的Oracle数据库和5.5版本的Mysql,所以我们以这个环境来做实验。

 

任务预览

准备环境--

source和target系统部署相应的示例数据库和OGG,创建相应的测试表,source系统创建相应的测试表初始化数据。source和target系统配置Manager进程并启动,最后生成source系统的数据定义文件并将其拷贝到target系统上。

配置Change Capture--

source端配置Classic捕获方式的change synchronization Extract进程组,在线捕获Mysql数据库的数据改变并存放在本地的trail中,因为是Mysql数据库作为source,所以只能用Classic捕获方式,Integrated捕获方式只支持Oracle数据库作为source,使用data pump二级Extract进程将trail传播到target端的remote trail中提供给Replicat进程应用。想了解更多OGG的捕获方式请参考我的另一篇文章:Oracle GoldenGate Capture Method

配置Change Delivery--

在target端配置change synchronization Replicat进程组,当初始化数据完成后启动change synchronization Replicat进程组应用改变的数据。想了解更多有关change synchronization的配置方式可以参考我的另一篇文章:Goldengate Oracle--Oracle 单向复制Change Synchronization安装部署,想了解Oracle数据库之间双向复制的部署可以参考Oracle GoldenGate Oracle—Oracle 双向复制

初始化数据--

对于异构数据库间的初始化数据,OGG提供了执行在线初始化同步的能力,这里我们使用OGG直接加载初始化数据的方式进行数据初始化,想了解更多的OGG初始化加载数据的方式请参考我的另一篇文章:Oracle GoldenGate 之初始化加载数据

 

准备Mysql source环境

1. 在source上配置Manager进程

在source系统上创建Manager参数文件并指定端口和一些需要的参数选项:

插入以下内容后保存退出

启动Manager进程

确认Manager进程已成功启动

2. source上创建测试表和数据

3. 开启binlog,设置binlog日志格式为row,OGG对Mysql作为源的复制只支持row格式

如果你的Mysql没有开启binlog,那么请关闭数据库,然后在其配置文件my.cnf中的相应位置插入以下内容,然后启动数据库:

路径和binlog名称根据自己实际情况填入。

4. 创建用于OGG登陆的数据库账户并赋予权限

5. 创建source端Mysql数据库需要复制同步的数据定义文件

创建defgen参数文件

插入以下内容后保存退出

在OGG安装目录下执行以下命令生成数据定义文件mysql.def

6. 将source的数据定义文件mysql.def拷贝到target端/home/ogg/dirdef目录下

 

准备Oracle target环境

1. 配置Manager进程

target系统上创建Manager参数文件并指定相应的端口和一些需要的参数。

插入以下内容后保存退出

启动Manager进程

确认Manager进程已经成功启动

2. 创建target数据库相应的用户和表

3. 创建用于OGG使用、登陆数据库和存放checkpoint表的账户以及表空间,并赋予相应权限

 

使用OGG直接加在方式加载初始化数据

更多OGG初始化加载数据方式请参考Oracle GoldenGate 之初始化加载数据

配置初始化加载--

1. 添加初始化捕获批处理任务组

在source系统上执行以下命令添加一个Extract进程叫做init:

确认结果:

2. 配置初始化加载捕获参数文件

创建初始化加载捕获参数文件

插入以下内容后保存退出

配置初始化加载交付

3. 在target端创建一个初始化加载交付批处理任务组

确认结果

4. 创建初始化加载交付参数文件

插入以下内容后退出

 

配置Change Capture

1. 在source端添加Extract组

定义本地trail与Extract的链接关系

确认结果

2. 创建Extract参数文件

插入以下内容后保存退出

“tranlogoptions ALTLOGDEST”这个参数指明了mysql-bin.index的路径,ogg需要通过这个文件来定位binlog

3. 添加data pump进程

定义remote trail与data pump的链接关系

4. 创建data pump参数文件

将以下内容插入后保存退出

5. 启动捕获进程和data pump进程

确认ext1已经启动成功

启动data pump进程

确认pump1进程已成功启动

 

配置Change Delivery

1. 在target系统上创建checkpoint table

2. 添加一个Replicat组用于在线同步复制应用

3. 创建一个Replicat参数文件

插入以下内容后保存退出

 

启动初始化加载数据

在source端启动之前配置的初始化加载提取任务init

在target端查看初始化数据加载复制进程的报告确认加载成功

从日志上看已初始化数据成功。

进一步进入Oracle数据库确认数据是否加载完成

数据初始化成功。

 

测试改变同步

1. 在source端数据库插入一些数据作为改变同步在线复制数据。

2. 在target端启动改变同步在线复制进程

确认rep1已经启动成功

进入Oracle数据库查看数据是否同步

缺失的数据已经同步。

3. 确认初始化数据加载完成后关闭改变同步Replicat进程rep1的handlecollisions。

并将rep1参数文件中的handlecollisions参数去除,防止rep1下次启动时handlecollisions被再次启用。

4. 测试在线同步

source数据库进行数据操作

target端Oracle数据库中查看数据是否同步

至此Mysql to Oracle异构数据库之间初始化加载数据、change synchronization单向复制配置完成。

请尊重我们的辛苦付出,未经允许,请不要转载 Ask600 的文章!