Loading
0

GoldenGate 之 Oracle to Mysql

 

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端配置Integrated捕获方式的change synchronization Extract进程组,在线捕获Oracle数据库的数据改变并存放在本地的trail中,使用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 GoldenGate Oracle—Oracle 双向复制

初始化数据--

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

 

准备Oracle source环境

1. 在source系统上配置Manager进程

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

  • 创建参数文件
  • 插入以下内容后保存退出
  • 启动Manager

 

  • 确认Manager启动成功

2. 创建source表和一些初始化数据

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

4. 添加辅助日志和开启归档

Oracle数据库开启归档的方法不再赘述,本数据库已开启归档,如果你的数据库没有开归档请将它开启。

OGG需要开启辅助日志,开辅助日志有几种方式,一种是对于数据库全局都开启辅助日志:

还有一种方式是通过OGG对需要捕获的表添加辅助日志:

有警告是因为我这些表没有主键或唯一键,OGG会将所有的有效的字段作为键使用。

也可以对整个SCHEMA添加辅助日志:

确认这些表上的辅助日志已经开启:

由于异构数据库之间不支持DDL复制,Mysql也没有Oracle使用的Sequence,所以Oracle数据库上不需要启用DDL复制支持和Sequence复制支持,想了解更多的关于DDL复制和“DBLOGIN”中ogg用户的用途请参考Goldengate Oracle--Oracle 单向复制Change Synchronization安装部署,本文中不再赘述。

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

创建defgen参数文件

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

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

5. 将source的数据定义文件oracle.def拷贝到target端/home/gg/dirdef目录下

 

准备Mysql target环境

1. 配置Manager进程

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

  • 创建参数文件
  • 插入以下内容后保存退出
  • 启动Manger
  • 确认Manager已启动成功

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

注意Mysql数据库是大小写敏感的,而Oracle数据库对大小写不敏感。并且Oracle数据库会把所有的小写字符内部都转换成大写,所以要注意在映射到Mysql时要么Mysql中将表全部建成大写,要么就是在使用Map映射是将每个表的对应关系写清楚,否则复制会失败。

这里我把mysql中的表都建成大写的:

3. 创建用于OGG使用登陆的数据库,例如需要存放checkpoint table

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

 

 

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

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

配置初始化加载--

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

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

确认结果:

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

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

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

配置初始化加载交付

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

确认结果:

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

将以下内容插入后退出:

Mysql与Oracle数据库登陆数据库不同的地方在于需要用targetdb指定登陆的数据库。

由于是异构环境,所以要指定sourcedefs参数,使用source数据库的数据定义文件。

 

配置Change Capture

1. 在source端添加Extract组

这里我们使用的是Integrated捕获方式而不是Classic捕获方式,这种方式是通过logmining server进行数据挖掘捕获数据的,Integrated捕获方式与Classic捕获方式的区别请参考Oracle GoldenGate Capture Method

由于我们使用的是Integrated捕获方式,所以我们必须将Extract进程注册到数据库中:

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

确认结果:

2. 创建Extract参数文件

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

3. 添加data pump进程

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

4. 创建data pump参数文件

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

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

确认extract ext1已启动

启动data pump进程

确认data pump进程已启动

 

配置Change Delivery

1. 在target系统上创建checkpoint table

与Oracle数据库登陆数据库不同的地方在于需要加上sourcedb这个参数指定登陆的数据库。

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

3. 创建一个Replicat参数文件

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

由于是异构环境,所以要指定sourcedefs参数,使用source数据库的数据定义文件。

handlecollisions参数来处理初始化加载的结果与实时改变同步捕获数据的冲突。

 

启动初始化加载数据

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

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

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

初始数据都已同步过来。

 

测试改变同步

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

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

确认rep1已启动

进入Mysql数据库查看数据是否同步:

缺失的数据已经同步。

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

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

4. 测试在线同步

source数据库进行数据操作

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

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

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