设为首页 加入收藏

TOP

OGG的Oracle与Hadoop集群准实时同步详解(一)
2016-12-11 08:15:04 】 浏览:868
Tags:OGG Oracle Hadoop 集群 实时 同步 详解

Oracle作为商业化的数据库解决方案,自发性的获取数据库事务日志等比较困难,故选择官方提供的同步工具OGG(Oracle GoldenGate)来解决。


安装与基本配置


环境说明


软件配置


以上源服务器上OGG安装在Oracle用户下,目标服务器上OGG安装在root用户下。


Oracle导出到异构的存储系统,如MySQL,DB2,PG等以及对应的不同平台,如AIX,Windows,Linux等官方都有提供对应的Oracle GoldenGate版本,可在这里或者在旧版本查询下载安装。


将下载到的对应OGG版本放在方便的位置并解压,本示例Oracle源端最终的解压目录为/u01/gg。


将下载到的对应OGG版本放在方便的位置并解压,本示例Oracle目标端最终的解压目录为/data/gg


Oracle实时传输到Hadoop集群(HDFS,Hive,Kafka等)的基本原理如图:

根据如上原理,配置大概分为如下步骤:源端目标端配置ogg管理器(mgr);源端配置extract进程进行Oracle日志抓取;源端配置pump进程传输抓取内容到目标端;目标端配置replicate进程复制日志到Hadoop集群或者复制到用户自定义的解析器将最终结果落入到Hadoop集群。


在源端服务器OGG主目录下,执行./ggsci到OGG命令行下,执行如下命令:


其中./globals变量没有的话可以用edit params ./globals来编辑添加即可(编辑器默认使用的vim)


在OGG命令行下执行如下命令:


说明:PORT即mgr的默认监听端口;DYNAMICPORTLIST动态端口列表,当指定的mgr端口不可用时,会在这个端口列表中选择一个,最大指定范围为256个;AUTORESTART重启参数设置表示重启所有EXTRACT进程,最多5次,每次间隔3分钟;PURGEOLDEXTRACTS即TRAIL文件的定期清理
在命令行下执行start mgr即可启动管理进程,通过info mgr可查看mgr状态


在OGG命令行下执行添加需要复制的表的操作,如下:


配置extract进程OGG命令行下执行如下命令:


说明:第一行指定extract进程名称;dynamicresolution动态解析;SETENV设置环境变量,这里分别设置了Oracle数据库以及字符集;userid ggs,password ggs即OGG连接Oracle数据库的帐号密码,这里使用2.3.4中特意创建的复制帐号;exttrail定义trail文件的保存位置以及文件名,注意这里文件名只能是2个字母,其余部分OGG会补齐;table即复制表的表明,支持*通配,必须以;结尾
接下来在OGG命令行执行如下命令添加extract进程:


最后添加trail文件的定义与extract进程绑定:


可在OGG命令行下通过info命令查看状态:


pump进程本质上来说也是一个extract,只不过他的作用仅仅是把trail文件传递到目标端,配置过程和extract进程类似,只是逻辑上称之为pump进程
在OGG命令行下执行:


说明:第一行指定extract进程名称;passthru即禁止OGG与Oracle交互,我们这里使用pump逻辑传输,故禁止即可;dynamicresolution动态解析;userid ggs,password ggs即OGG连接Oracle数据库的帐号密码,这里使用2.3.4中特意创建的复制帐号;rmthost和mgrhost即目标端OGG的mgr服务的地址以及监听端口;rmttrail即目标端trail文件存储位置以及名称
分别将本地trail文件和目标端的trail文件绑定到extract进程:


同样可以在OGG命令行下使用info查看进程状态:


Oracle与MySQL,Hadoop集群(HDFS,Hive,kafka等)等之间数据传输可以定义为异构数据类型的传输,故需要定义表之间的关系映射,在OGG命令行执行:


在OGG主目录下执行:
./defgen paramfile dirprm/tcloud.prm
完成之后会生成这样的文件/u01/gg/dirdef/tcloud.t_ogg,将这个文件拷贝到目标端的OGG主目录下的dirdef目录即可。


这里主要是当目标端为HDFS目录或者Hive表或者MySQL数据库时需要手动先在目标端创建好目录或者表,创建方法都类似,这里我们模拟实时传入到HDFS目录,故手动创建一个接收目录即可
hadoop –fs mkdir /gg/replication/hive/


目标端的OGG管理器(mgr)和源端的配置类似,在OGG命令行下执行:


checkpoint即复制可追溯的一个偏移量记录,在全局配置里添加checkpoint表即可


保存即可


在OGG的命令行下执行:


说明:REPLICATE r2hdfs定义rep进程名称;sourcedefs即在3.6中在源服务器上做的表映射文件;TARGETDB LIBFILE即定义HDFS一些适配性的库文件以及配置文件,配置文件位于OGG主目录下的dirprm/hdfs.props;REPORTCOUNT即复制任务的报告生成频率;GROUPTRANSOPS为以事务传输时,事务合并的单位,减少IO操作;MAP即源端与目标端的映射关系
其中property=dirprm/hdfs.props的配置中,最主要的几项配置及注释如下:


具体的OGG for Big Data支持参数以及定义可参考地址


http://docs.oracle.com/goldengate/bd1221/gg-bd/GADBD/toc.htm


最后在OGG的命令行下执行:


将文件与复制进程绑定即可


在源端和目标端的OGG命令行下使用start [进程名]的形式启动所有进程。
启动顺序按照源mgr——目标mgr——源extract——源pump——目标replicate来完成。


以上启动完成之后,可在源端与目标端的OGG命令行下使用info [进程名]来查看所有进程状态,如下:
源端:


目标端:


所有的状态均是RUNNING即可。(当然也可以使用info all来查看所有进程状态)


测试方法比较简单,直接在源端的数据表中insert,update,delete操作即可。由于Oracle到Hadoop集群的同步是异构形式,目前尚不支持truncate操作。
源端进行insert操作


查看源端trail文件状态


查看目标端trail文件状态


查看HDFS中是否有写入


注意:从写入到HDFS的文件内容看,文件的格式如下:


很明显Oracle的数据已准实时导入到HDFS了。导入的内容实际是一条条的类似流水日志(具体日志格式不同的传输格式,内容略有差异,本例使用的delimitedtext。格式为操作符 数据库.表名 操作时间戳(GMT+0) 当前时间戳(GMT+8) 偏移量 字段1名称 字段1内容 字段2名称 字段2内容),如果要和Oracle的表内容完全一致,需要客户手动实现解析日志并写入到Hive的功能,这里官方并没有提供适配器。目前腾讯侧已实现该功能的开发。
当然你可以直接把这个HDFS的路径通过LOCATION的方式在Hive上建外表(external table)达到实时导入Hive的目的。


OGG for Big Data实现了Oracle实时同步

首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇远程连接MySQL很慢的解决方法 下一篇Oracle备库TNS连接失败的分析

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目