暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

利用GoldenGate 12C的integrated Extract方式实现完全无侵入式数据同步

凛冬未至 2017-06-22
1161

GoldenGate是否必须部署在数据库服务器上,它能部署在独立的第三方服务器上吗,能通过TNS的方式连接源端数据库进行数据的抽取吗?如果可以实现的话,这就是正真的非侵入式了,关于侵入式的危害,我们能列举出来一堆。比如最近爆出的某云服务商通过嵌入式的程序,收集客户信息数据的恶型事件。

针对这个问题在查阅了相关技术资料并在Docker环境上快速搭建了2个Oracle数据库并建立一个包含了Oracle database12C 客户端的IaaS环境,在它们之间进行了GoldenGate 12C基于TNS方式连接进行数据抽取的测试。关于如何使用Docker建立Oracle数据库的文章,请参考前几期的文章分享。

 

Oracle Goldengate 11g版本开始,oracle引入了一种新的capture mode,称为Integrated Capture Mode。传统的capture mode被称为classic capture mode。

在classic capture mode中,goldengate extract进程直接读取oracle redo log,捕获数据变化,存为Goldengate的trail file格式,然后利用pump进程将这些trail file传输到目标数据库,目标数据库上的replicat进程读取这些trail file,再利用sql将这些变化apply到目标数据库里。而在新的integrated capture mode中,goldengateextract进程不再直接读取oracle redo log,而是通过与数据库log mining server整合来捕获数据变化:log mining server负责以LCR的格式从数据库日志中捕获数据变化,然后extract进程再将这些抓取的数据存成trail file的格式。与classic capture mode相比,这种integratedcapture mode的主要差别就是extract不再直接读取oracle redo log,而交由数据库内部的log mining工具来完成。由于extract进程是由操作系统来管理的,身处数据库系统之外,integratedcapture mode的这种改变所带来的主要好处体现在兼容性方面:支持更多的数据类型和存储类型,以及由于与数据库更紧密的整合,不再需要为Oracle RAC,ASM和TDE作更多额外的配置工作。

 

使用Integrated Extract,数据库有如下的限制:

  • Must be at least 11.2.0..3

  • Database patch 1411356.1 must be installed.

 

测试环境:

Source:模拟源端数据库 Oracle 12C  IP:129.191.26.214

Stage安装Oracle Database 12C Client并部署GoldenGate 12C抽取和投递进程,完成源端数据库向目标端数据库数据同步的工作 IP:129.191.27.7,在源端数据库和目标端数据库服务器都不再部署GoldenGate软件。

Target:模拟目标端数据库 Oracle 12C IP:129.191.26.216

测试过程:

1、目标端数据库配置

1.1、    建立数据库用户

    数据库用户oggtrg是目标数据库对象,oggadmin,用于GoldenGate的数据同步。

1.2、    使用oggtrg登录目标数据库,建立如下的数据库对象

1.3、    在部署Goldengate的服务器上建立指到目标数据库的TNS连接如下:

1.4、    登录Goldengate的服务器进行配置

1.5、    登录Goldengate的服务器进行mgr进程的配置

1.6、    在GoldenGate中建立基于目标端数据库oggadmin数据库用户的连接认证

1.7、    在GoldenGate中建立用于数据投递的Replication进程

2、源端数据库配置

    2.1、建立源端数据库用户

2.2、建立源端数据库测试数据

2.3、登录部署GoldenGate的服务器,建立连接源端数据库的TNS

       2.4、设置GoldenGateMGR进程

      2.5、在Goldengate中建立连接源端数据库的连接认证

      2.6、为源端复制表添加数据库表级附加日志

     2.7、在Goldengate中增加源端数据库数据抽取进程

 2.8、在GoldenGate中增加数据泵进程

3、进行数据同步测试

     3.1、启动GoldenGate的相关进程,参考如下方法依次启动数据抽取、网络传输、数据投递进程

      3.2、在源端数据库插入数据

      3.3、在目标端数据检查数据是否被同步过来

检查发现,数据从源端数据库同步到目标端数据。

通过这次测试,验证了Goldengate的integrated抽取的工作原理和模式,证明了通过TNS的方式可以实现完全隔离的非侵入式数据同步,降低了侵入式工作方式带来的资源占用和运行风险

在Oracle公有云上使用docker技术搭建整个测试环境并完成GoldenGate的非侵入部署和测试,总共用时1个小时。我们看到使用Oracle公有云技术来进行的测试是多么的快捷和方便。这也是为什么我们极力推荐大家使用公有云的原因吧。

 

附录

GoldenGate使用TNS信息如下:

target=

  (DESCRIPTION =

    (ADDRESS = (PROTOCOL = TCP)(HOST =129.191.26.216)(PORT = 1521))

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME = pdb1.localdomain)

    )

  )

source=

  (DESCRIPTION =

    (ADDRESS = (PROTOCOL = TCP)(HOST =129.191.26.214)(PORT = 1521))

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME = orc12.my.domain.com)

    )

  )

部署GoldenGate的相关命令参考:

addcredentialstore

altercredentialstore add user oggadmin@target password oracle alias oggadmin

dbloginuseridalias oggadmin

addreplicat repin integrated exttrail ./dirdat/pn

altercredentialstore add user C##GGADMIN@source password Welcome_123#oggadminsource\

dbloginuseridalias oggadminsource

addtrandata PDB1.oggsrc.* allcols

registerextract extin DATABASE CONTAINER (PDB1)

addextract extin, integrated tranlog, begin now

addexttrail ./dirdat/in, extract extin, megabytes 10

addextract pump, exttrailsource ./dirdat/in

addrmttrail ./dirdat/pn, extract pump, megabytes 10Goldengate 进程相关参数:

1、Mgr进程:

PORT 7809

Dynamicportlist 7740-7760

-- For IPADDR, enter IP ADDRESS of this GoldenGate Cloud Service VM

--ACCESSRULE, PROG COLLECTOR, IPADDR 11.111.111.111, ALLOW

PurgeOldExtracts ./dirdat/*, UseCheckPoints, MinKeepHours 2

AUTORESTART Extract *, WaitMinutes 1, Retries 3

2、extin进程

EXTRACT EXTIN

useridalias  oggadminsource

TranlogOptions IntegratedParams (max_sga_size 256)

EXTTRAIL ./dirdat/in

DISCARDFILE ./dirrpt/EXTIN.dsc, APPEND Megabytes 50

LOGALLSUPCOLS

UPDATERECORDFORMAT COMPACT

REPORTCOUNT EVERY 2 HOURS, RATE

Table PDB1.OGGSRC.*;

3、pump进程

extract pump

--UserIdAlias oggadminsource

RMTHOST 127.0.0.1,  MGRPORT 7809

--, socksproxy 127.0.0.1:9000

RMTTRAIL ./dirdat/pn

discardfile ./dirrpt/pump.dsc, APPEND Megabytes 50

REPORTCOUNT EVERY 2 HOURS, RATE

PASSTHRU

Table PDB1.OGGSRC.*;

4、repin进程

REPLICAT REPIN

useridalias oggadmin

DBOPTIONS INTEGRATEDPARAMS(parallelism 6)

ASSUMETARGETDEFS

DISCARDFILE ./dirrpt/REPIN.dsc, Purge

REPORTCOUNT EVERY 5 records, RATE

-- MAP <source schema name>.<table name>, TARGET <tablename>;

MAP PDB1.oggsrc.*, TARGET oggtrg.*;

 

 

 

文章转载自凛冬未至,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论