使用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逻辑架构
在OGG使用过程中主要涉及以下进程及文件:
Manager进程:需要源端跟目标端同时运行,主要作用是监控管理其它进程。
Extract进程:运行在源端,主要是捕获数据的变化,负责全量、增量数据的抽取。
Trails文件:临时存放在磁盘上的数据文件。
Data Pump进程:运行在数据库源端,属于Extract进程的一个辅助进程。
Collector进程:接收源端传输过来的数据变化,并写入本地Trail文件中。
Replicat进程:读取Trail文件中记录的数据变化,创建对应的DML语句并在目标端回放。
部 署
oracle源端安装配置ogg
安装ogg
创建对应ogg用户及权限
配置ogg
a、进入ogg控制台,创建ogg工作目录
b、增加表级附加日志
c、配置管理进程mgr
d、配置抽取进程
e、配置传输进程
部 署
mysql目标端安装配置ogg
安装ogg
创建对应ogg用户及权限
配置ogg
a、进入ogg控制台,创建ogg工作目录
b、配置管理进程mgr
c、配置ogg参数
d、配置复制进程
ogg日常维护命令
参数说明
总 结
A.目标端mysql初始化数据,oracle和mysql是两个不同的数据库,在初始化的时候就会遇到很多问题:比如,oracle数据库是区分大小写的,但是mysql数据库通常是配置不区分大小写的;
oracle数据库支持number、varchar2类型,但导入时需转换成varchar、decimal类型;
所以需先对数据进行过滤,避免出现主键冲突或数据类型不支持的情况。
后面ogg配置部署完成后,可通过修改目标端ogg的复制进程参数,直接指定进程从哪个SCN号同步数据;
B.在配置ogg时,配置的日志等路径,建议配置成相对路径,方便以后可以快速迁移ogg;
C.oracle到mysql的ogg属于异构的ogg,因此需要借助defgen命令生成的映射文件, 也就是两个表的映射关系,并把文件传到目标端相应位置下,才能完成数据库同步。因此需要注意字符集问题, 源端和目标端配置的字符集需一致,
否则可能会导致同步失败。
上述对ogg实现oracle到mysql的数据同步,只是一个初步的理解,对部署搭建ogg还有不熟的地方,希望大家可以多多提提意见。
本期作者
本期作者 | April:新炬DBA运维工程师,主要方向是Mysql数据库,拥有3年以上的数据库运维及性能优化经验,目前正在拓展sql优化等方面的技能。