使用ogg实现oracle到mysql的数据传输 OGG全称为Oracle GoldenGate,是由Oracle官方提供的用于解决异构数据环境中数据复制的一个商业工具。相比于其它迁移工具OGG的优势在于可以直接解析源端Oracle的redo log,因此能够实现在不需要对原表结构做太多调整的前提下完成数据增量部分的迁移。本篇文章主要介绍如何使用OGG实现Oracle到MySQL数据的传输。

ogg下载地址:http://www.oracle.com/technetwork/cn/middleware/goldengate/downloads/index.html


ogg for mysql下载 oracle mysql ogg_oracle

OGG逻辑架构



ogg for mysql下载 oracle mysql ogg_ogg 表附加日志_02

在OGG使用过程中主要涉及以下进程及文件:

Manager进程:需要源端跟目标端同时运行,主要作用是监控管理其它进程。

Extract进程:运行在源端,主要是捕获数据的变化,负责全量、增量数据的抽取。

Trails文件:临时存放在磁盘上的数据文件。

Data Pump进程:运行在数据库源端,属于Extract进程的一个辅助进程。

Collector进程:接收源端传输过来的数据变化,并写入本地Trail文件中。

Replicat进程:读取Trail文件中记录的数据变化,创建对应的DML语句并在目标端回放。


部 署

oracle源端安装配置ogg

安装ogg

ogg for mysql下载 oracle mysql ogg_ogg for mysql下载_03

创建对应ogg用户及权限

ogg for mysql下载 oracle mysql ogg_ogg for mysql下载_04

配置ogg


a、进入ogg控制台,创建ogg工作目录

ogg for mysql下载 oracle mysql ogg_ogg for mysql下载_05

b、增加表级附加日志

ogg for mysql下载 oracle mysql ogg_mysql_06

c、配置管理进程mgr

ogg for mysql下载 oracle mysql ogg_数据_07

d、配置抽取进程

ogg for mysql下载 oracle mysql ogg_mysql_08

e、配置传输进程

ogg for mysql下载 oracle mysql ogg_oracle_09


部 署


mysql目标端安装配置ogg

安装ogg

ogg for mysql下载 oracle mysql ogg_数据_10

创建对应ogg用户及权限

ogg for mysql下载 oracle mysql ogg_ogg for mysql下载_11

配置ogg

a、进入ogg控制台,创建ogg工作目录

ogg for mysql下载 oracle mysql ogg_ogg for mysql下载_12

b、配置管理进程mgr

ogg for mysql下载 oracle mysql ogg_ogg 表附加日志_13

c、配置ogg参数

ogg for mysql下载 oracle mysql ogg_ogg for mysql下载_14

d、配置复制进程

ogg for mysql下载 oracle mysql ogg_mysql_15

ogg日常维护命令

ogg for mysql下载 oracle mysql ogg_ogg for mysql下载_16

参数说明

ogg for mysql下载 oracle mysql ogg_oracle_17

ogg for mysql下载 oracle mysql ogg_ogg for mysql下载_18



ogg for mysql下载 oracle mysql ogg_数据_19

总 结

A.目标端mysql初始化数据,oracle和mysql是两个不同的数据库,在初始化的时候就会遇到很多问题:比如,oracle数据库是区分大小写的,但是mysql数据库通常是配置不区分大小写的;

oracle数据库支持number、varchar2类型,但导入时需转换成varchar、decimal类型;

所以需先对数据进行过滤,避免出现主键冲突或数据类型不支持的情况。

后面ogg配置部署完成后,可通过修改目标端ogg的复制进程参数,直接指定进程从哪个SCN号同步数据;

B.在配置ogg时,配置的日志等路径,建议配置成相对路径,方便以后可以快速迁移ogg;


C.oracle到mysql的ogg属于异构的ogg,因此需要借助defgen命令生成的映射文件, 也就是两个表的映射关系,并把文件传到目标端相应位置下,才能完成数据库同步。因此需要注意字符集问题, 源端和目标端配置的字符集需一致,

ogg for mysql下载 oracle mysql ogg_ogg 表附加日志_20

否则可能会导致同步失败。



ogg for mysql下载 oracle mysql ogg_数据_21

上述对ogg实现oracle到mysql的数据同步,只是一个初步的理解,对部署搭建ogg还有不熟的地方,希望大家可以多多提提意见。


本期作者


ogg for mysql下载 oracle mysql ogg_ogg 表附加日志_22

本期作者 | April新炬DBA运维工程师,主要方向是Mysql数据库,拥有3年以上的数据库运维及性能优化经验,目前正在拓展sql优化等方面的技能。