OGG的Oracle与Hadoop集群准实时同步详解(5)

目标端:

GGSCI (10.0.0.2) 13> info mgr Manager is running (IP port 10.0.0.2.7809, Process ID 8242). GGSCI (10.0.0.2) 14> info r2hdfs REPLICAT R2HDFS Last Started 2016-11-09 16:45 Status RUNNING Checkpoint Lag 00:00:00 (updated 00:00:02 ago) Process ID 4733 Log Read Checkpoint File /data/gg/dirdat/tc000000 First Record RBA 0

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

测试同步更新效果

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

SQL> conn tcloud/tcloud Connected. SQL> select * from t_ogg; no rows selected SQL> desc t_ogg; Name Null? Type ----------------------------------------- -------- ---------------------------- ID NOT NULL NUMBER(38) TEXT_NAME VARCHAR2(20) SQL> insert into t_ogg values(1,'test'); 1 row created. SQL> commit; Commit complete.

查看源端trail文件状态

[oracle@VM_0_25_centos dirdat]$ ls -l /u01/gg/dirdat/tc* -rw-rw-rw- 1 oracle oinstall 1180 Nov 9 17:05 /u01/gg/dirdat/tc000000

查看目标端trail文件状态

[root@10 dirdat]# ls -l /data/gg/dirdat/tc* -rw-r----- 1 root root 1217 Nov 9 17:05 /data/gg/dirdat/tc000000

查看HDFS中是否有写入

hadoop fs -ls /gg/replication/hive/tcloud.t_ogg -rw-rw-r-- 3 root hdfs 110 2016-11-09 17:05 /gg/replication/hive/tcloud.t_ogg/tcloud.t_ogg_2016-11-09_17-05-30.514.txt

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

ITCLOUD.T_OGG2016-11-09 09:05:25.0670822016-11-09T17:05:30.51200000000000000000001080ID1TEXT_NAMEtest

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

总结

OGG for Big Data实现了Oracle实时同步到Hadoop体系的接口,但得到的日志目前仍需应用层来解析(关系型数据库如MySQL时OGG对应版本已实现应用层的解析,无需人工解析)。
OGG的几个主要进程mgr,extract,pump,replicate配置方便,可快速配置OGG与异构关系存储结构的实时同步。后续如果有新增表,修改对应的extract,pump和replicate进程即可,当然如果是一整个库,在配置上述2个进程时,使用通配的方式即可。

附录

OGG到Hadoop体系的实时同步时,可在源端extract和pump进程配置不变的情况下,直接在目标端增加replicate进程的方式,增加同步目标,以下简单介绍本示例中增加同步到Kafka的配置方法。
本示例中extract,pump进程都是现成的,无需再添加。只需要在目标端增加同步到Kafka的replicate进程即可。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/bc98451e7b8445713e4c0f3fb135cf3e.html