GoldenGate安装部署

发布时间 : 星期一 文章GoldenGate安装部署更新完毕开始阅读

alias Extract进程不需要配置文件 添加语法:

ADD EXTRACT

, RMTHOST { | } , {MGRPORT } | {PORT ] *, DESC “”+

此处测试的创建命令如下:

GGSCI> add extract ext146pa, rmthost 192.168.0.146, mgrport 7801, rmtname pumpa

--需要定义源端的地址、端口,而且如果alias extract名称和passive extract名称不同,需要特别指定rmtname

(2)添加应用进程(与普通情况下完全一样)

GGSCI> add replicat rep146ea exttrail D:\\ggoracle\\dirdat\\trail146\\ea,nodbcheckpoint

配置文件rep146ea.prm: /***

REPLICAT rep146ea

USERID coss3,PASSWORD coss3 assumetargetdefs

REPERROR default,discard

DISCARDFILE d:\\ggoracle\\log\\rep146ea.dsc,append,megabytes 200 gettruncates

HANDLECOLLISIONS

BATCHSQL BATCHESPERQUEUE 200, OPSPERBATCH 2000 MAP coss360.per_test, TARGET coss3.per_test, keycols (sampletime, objectid); ***/

3.同步进程的启动和关闭

注意,passive extract(这里是pumpa)不应该被手动启动(手动也无法启动)。在上面的进程创建和配置完成后,正确的启动方式如下: (1)源端start exta,目标端start rep146ea (2)目标端start ext146pa(alias Extract)

(3)在正确的配置下,pumpa会自动启动。Pumpa启动后,同步正常开始。 同样,进程关闭时,无论在源端关闭passive extract或是在目标端关闭alias extract,对应的alias extract和passive extract都会自动关闭。

29

5.6 GoldenGate双向复制(active-active)

双向复制系统架构如下:

GoldenGate双向复制,意即两端数据库互为源数据,无论在哪一端上对业务数据进行操作,都将同步应用到另一端。

5.6.1 双向复制的注意点

1.防止数据循环 双向复制中,最主要的问题是需要防止数据的循环应用。在GoldenGate中,需要从两方面进行预防:

(1)防止Extract进程抓取Replicat进程的SQL操作。

在默认配置下,GoldenGate的Extract进程会忽略捕获由Replicat执行的SQL操作(Teradata除外,需要进行额外配置),所以这部分一般不需要额外设置。 (2)使Extract进程识别本地Replicat执行的DML事务,并进行忽略。 这步在Oracle(10g and later)中的配置为在Extract进程加入参数:

TRANLOGOPTIONS EXCLUDEUSER 进行排除。

不同的数据库这里需要配置的参数不同。如果是Oracle 9i或之前的版本,需要配置tracetable。

2.防止数据冲突 由于是双向复制,那么当两端都对同一数据进行操作时,就会发生冲突。比如同时对某行数据进行修改,修改的操作将会被覆盖(视LAG以及事务的先后);又比如两端插入或删除相同键值的数据。 对于这类数据冲突,最好是在业务应用层解决。比如,可以划分两端数据库应用的业务范围,一部分数据只在一端修改维护,另一端则修改维护其他数据;在两端定义不同的键值生成策略;关注同步表上的触发器和on delete cascade约束。也可以借助GoldenGate的映射和过滤功能,对于两端同步的数据进行区分。 总之,在配置双向复制环境时,需要综合考虑当时业务情况,一般都需要在应用层进行适当的修改,以防止数据冲突带来的数据丢失和不一致。

30

5.6.2 双向配置示例

这个示例中,ggdba用户作为GoldenGate专用用户,ddw和ddws分别为两端数据库需要同步的schema(也可以同名,这里是为了便于区别),通过在两端Extract中配置排除ggdba的操作防止循环应用。以下ddw结尾的进程均在ddw用户所在数据库,ddws结尾的进程均在ddws用户所在数据库。

(1) ddw==>ddws

添加提取进程:

GGSCI> add extract extddw,tranlog,begin now /***

extract extddw userid ggdba,password ggdba exttrail E:\\ggoracle\\dirdat\\e1

tranlogoptions excludeuser ggdba --排除捕获ggdba dynamicresolution gettruncates TABLE ddw.*; ***/

GGSCI> add exttrail E:\\ggoracle\\dirdat\\e1, extract extddw

添加datapump:

GGSCI> add extract pumpddw,exttrailsource E:\\ggoracle\\dirdat\\e1,begin now /***

extract pumpddw

userid ggdba,password ggdba

rmthost 192.168.1.101, mgrport 7801 rmttrail E:\\ggoracle\\dirdat\\rep\\e1 PASSTHRU gettruncates table ddw.*; ***/

GGSCI> add rmttrail E:\\ggoracle\\dirdat\\rep\\e1, extract pumpddw

添加复制应用进程

GGSCI> add replicat repddws,exttrail E:\\ggoracle\\dirdat\\rep\\e1, nodbcheckpoint /***

replicat repddws userid ggdba,password ggdba ASSUMETARGETDEFS reperror default,discard

discardfile E:\\ggoracle\\log\\repddws.dsc,append,megabytes 200

31

gettruncates

HANDLECOLLISIONS

MAP ddw.*, TARGET ddws.*; ***/

(2) ddws==>ddw

添加提取进程:

GGSCI> add extract extddws,tranlog,begin now /***

extract extddws userid ggdba,password ggdba exttrail E:\\ggoracle\\dirdat\\e2

tranlogoptions excludeuser ggdba --排除捕获ggdba dynamicresolution gettruncates TABLE ddws.*; ***/

GGSCI> add exttrail E:\\ggoracle\\dirdat\\e2, extract extddws

添加datapump:

GGSCI> add extract pumpddws,exttrailsource E:\\ggoracle\\dirdat\\e2,begin now /***

extract pumpddws

userid ggdba,password ggdba

rmthost 192.168.1.101, mgrport 7801 rmttrail E:\\ggoracle\\dirdat\\rep\\e2 PASSTHRU gettruncates table ddws.*; ***/

GGSCI> add rmttrail E:\\ggoracle\\dirdat\\rep\\e2, extract pumpddws

添加复制应用进程:

GGSCI> add replicat repddw,exttrail E:\\ggoracle\\dirdat\\rep\\e2, nodbcheckpoint /***

replicat repddw userid ggdba,password ggdba ASSUMETARGETDEFS reperror default,discard

discardfile E:\\ggoracle\\log\\repddw.dsc,append,megabytes 200 gettruncates

HANDLECOLLISIONS

32

联系合同范文客服:xxxxx#qq.com(#替换为@)