• Goldengate进程的合并与拆分规范


     

     

    Goldengate抽取进程的合并与拆分原则

    1.    文档综述

    1.1.  文档说明

    本文档描述了对GoldenGate的抽取进程进行拆分和合并的基本原则和详细步骤。

     1.2.  读者范围

    本文档主要容灾相关人员、纳入数据级容灾范围的应用系统相关人员使用,在Goldengate实施、运维的整个生命周期中,必须严格遵循本系列文档。

    1.3.  术语说明

    序号

    完整说法

    缩略说法

    1

    GoldenGate

    GG或OGG

     

     

     

     

     

     

     

     

    2.      抽取进程的拆分

    2.1.  拆分原则

     

    原则1抽取进程尽量少,原则上只允许配置一个抽取进程。如果一个抽取进程不能满足性能要求,则按照以下原则进行拆分。

    原则2保证数据和业务一致性,按业务耦合度配置进程:存在业务耦合的对象,必须配置在一个抽取进程中;

    原则3按Redo日志量配置进程:以小时估算,在业务峰值时,单个抽取进程每小时处理的redo量不超过40G,否则建议进行进程拆分,确保每个抽取进程每小时处理的redo不超过40G;

    原则4原则2的优先级高于原则3;

    2.2.  拆分细则

    1、  如果schema之间存在业务耦合,则单独配置抽取进程,确保这些表在一个抽取进程之内;

    2、  如果schema之间没有业务耦合,则以schema为最小单位配置抽取进程;

    3、  如果一个schema内部表与表之间存在业务耦合关系,则需要确保这些表在一个抽取进程之内

    4、  传输进程与抽取进程需要一一对应;

    2.3.  拆分步骤

    1、      停止extract进程

    2、      停止datapump进程

    GGSCI> INFO datapump_name

    EXTRACTDPEF      Last Started 2011-01-28 12:34   Status RUNNING

    Checkpoint Lag       00:00:00 (updated 00:00:05 ago)

    Log Read Checkpoint  File ./dirdat/ef000010

                         2011-01-28 12:47:45.000000  RBA 148645

    直至RBA号不变化,才能停止

    3、      停止replicat进程

    GGSCI> INFO replicat_name

    REPLICATRPEF      Last Started 2011-01-28 12:30   Status RUNNING

    Checkpoint Lag       00:00:00 (updated 00:00:05 ago)

    Log Read Checkpoint  File ./dirdat/ef000006

                         2011-01-28 12:47:45.000000  RBA 149258

    直至RBA号不变化,才能停止

    4、      记录extract检查点

    Extract检查点包括:RecoveryCheckpoint和Current Checkpoint

    GGSCI> INFO extract_name, SHOWCH

    EXTRACTEXEE      Last Started 2011-01-28 09:58   Status STOPPED

    Checkpoint Lag       00:00:00 (updated 00:01:02 ago)

    Log Read Checkpoint  Oracle Redo Logs

                         2011-01-28 10:02:16  Seqno 26, RBA 7090688

    Current Checkpoint Detail:

    Read Checkpoint #1

    Oracle Redo Log

    Startup Checkpoint (starting position in the data source):

    Sequence #: 26

    RBA: 289296

    Timestamp: 2011-01-28 09:27:31.000000

    Redo File: C:ORACLEPRODUCT10.2.0ORADATAORCLREDO02.LOG

    Recovery Checkpoint (position of oldest unprocessed transaction in the data source):

        Sequence #: 26

        RBA: 7088144

        Timestamp: 2011-01-28 10:02:16.000000

        Redo File: C:ORACLEPRODUCT10.2.0ORADATAORCLREDO02.LOG

    Current Checkpoint (position of last record read in the data source):

        Sequence #: 26

        RBA: 7090688

        Timestamp: 2011-01-28 10:02:16.000000

        Redo File: C:ORACLEPRODUCT10.2.0ORADATAORCLREDO02.LOG

    Write Checkpoint #1

      GGS Log Trail

    Current Checkpoint (current write position):

    Sequence #: 11

    RBA: 31609

    Timestamp: 2011-01-28 10:02:19.072000

    Extract Trail: ./dirdat/ee

    Header:

    Version = 2

    Record Source = A

    Type = 4

      # Input Checkpoints = 1

      # Output Checkpoints = 1

    File Information:

    Block Size = 2048

      Max Blocks = 100

    Record Length = 2048

    Current Offset = 0

    Configuration:

    Data Source = 3

    Transaction Integrity = 1

    Task Type = 0

    Status:

    Start Time = 2011-01-28 09:58:34

    Last Update Time = 2011-01-28 10:02:19

    Stop Status = G

    Last Result = 400

    5、修改原有相应的参数文件,将拆分出的表从参数文件中删除

    6、      增加新的extract,datapump和replicat

    --source--------------------------------------------------

    GGSCI (win2k364) 15> add extexef, tranlog, begin now

    EXTRACT added.

    GGSCI (win2k364) 16> add exttrail ./dirdat/ef, extexef, megabytes 50

    EXTTRAIL added.

    GGSCI (win2k364) 17> add extdpef, exttrailsource ./dirdat/ef

    EXTRACT added.

    GGSCI (win2k364) 18> add rmttrail ./dirdat/ef, extdpef, megabytes 50

    RMTTRAIL added.

    --target--------------------------------------------------

    GGSCI (win2k364) 21> add rep rpef, exttrail ./dirdat/ef

    REPLICAT added.

    7、      修改新增extract进程的检查点

    检查点为上面记录的两个检查点:current read checkpoint and recovery checkpoint

    --修改current read checkpoint

    GGSCI (win2k364) 30> alter exefextseqno 26, extrba 7090688[, thread n]

    EXTRACT altered.

    --修改recovery checkpoint

    GGSCI (win2k364) 4> alter exefioextseqno 26, ioextrba 7088144[, thread n]

    2011-01-28 10:46:18  INFOOGG-00989  WARNING: Unsupported operation. This might cause transactional inconsistency. Modifying iocheckpoint: ioseq = 26 iorba = 7088144.

    Are you sure you want to continue? y

    EXTRACT altered.

    8、确认所有参数文件正确,启动进程即可

    3.      抽取进程的合并

    3.1.  合并原则

    原则1合并以后,抽取进程尽量少。原则上只允许配置一个抽取进程,如果一个抽取进程不能满足性能要求,则需要满足以下原则。

    原则2按业务耦合度进行合并:存在业务耦合度的对象,必须配置在一个抽取进程中;

    原则3按Redo日志量进行合并:合并以后,在业务峰值时,单个抽取进程每小时处理的redo量不超过40G;

    原则4原则2的优先级高于原则3;

    3.2.  合并细则

    抽取进程合并时,遵循以下原则:(按优先级排序)

    1、  一个schema如果对应了多个抽取进程,其内部的对象之间存在业务耦合性,则必须合并;

    2、抽取进程虽然按照schema进行划分,但是schema之间的对象存在业务耦合性,则需要进行合并;

    3、即使抽取进程之间不存在业务耦合性,但是拆分的抽取进程过多,对生产系统产生较大性能影响(如I/O,CPU,Mem等),建议进程合并。进程合并以后,在业务峰值时,单个抽取进程每小时处理的redo量不超过40G;

    4、即使抽取进程之间不存在业务耦合性,但是单个抽取进程处理的日志量小于10G,则建议进行合并,在业务峰值时,单个抽取进程每小时处理的redo量不超过40G;

    3.3.  合并步骤

    此方法利用GoldenGate提供的事件方式,让所有的extract进程在同一地方停止。然后进行extract合并。

    在extract的参数文件中设置tabletable_name, eventactions (stop)的参数,来保证所有的extract进程的recoverycheckpoint停止在相同的scn号上,current checkpoint也停止在相同的scn号上,方案实现时需要在源端手工创建一张表(表的字段可以任意),这是不同于上面两种方法的地方。当我们合并完extract后,可以手工的删除该表,对目前现有的应用系统无任何影响。

    1、停止所有的extract进程

    2、停止所有的datapump进程

    GGSCI> INFO datapump_name

    EXTRACTDPEF      Last Started 2011-01-28 12:34   Status RUNNING

    Checkpoint Lag       00:00:00 (updated 00:00:05 ago)

    Log Read Checkpoint  File ./dirdat/ef000010

    2011-01-28 12:47:45.000000  RBA 148645

    使用logdump工具,根据上面的INFO信息,确认已经处理到最后一个队列文件,并且输入RBA号之后,没有后续记录,即确保队列文件全部处理完毕才能停止。

    按照上述方法确认每个datapump后,停止所有的datapump进程

    3、停止所有的replicat进程

    GGSCI> INFO replicat_name

    REPLICATRPEF      Last Started 2011-01-28 12:30   Status RUNNING

    Checkpoint Lag       00:00:00 (updated 00:00:05 ago)

    Log Read Checkpoint  File ./dirdat/ef000006

    2011-01-28 12:47:45.000000  RBA 149258

    使用logdump工具,根据上面的INFO信息,确认已经处理到最后一个队列文件,并且输入RBA号之后,没有后续记录,即确保队列文件全部处理完毕才能停止。

    按照上述方法确认每个replicat后,停止所有的replicat进程

    4、在源端数据库的gg_user用户下创建ea_commit表

    SQL> conn gg_user/****

    SQL>create table ea_commit (time date);

    5、  在源端数据库创extract进程的参数文件中都加入如下的内容:

    Tablegg_user.ea_commit, eventactions (stop);

    6、正常启动所有的extract进程、datapump进程和replicat进程。

    7、采用事件方式,让所有extract在同一地方停止,在sqlplus中执行如下的sql语句

    SQL> conn gg_user/****

    SQL>insert into gg_user.ea_commit values (sysdate);

    SQL> commit;

    这里需要说明的是一定要执行commit命令,才能保证所有的extract进程都停在相同的checkpoint上。

    8、这时通过infoext*命令看到所有的extract进程都应该是stopped的。

    如果不是,则说明eventactions设置不正确,需要重复上述4—7的步骤。

    如果所有的extract都是stopped的状态,使用infoext*,showch命令依次查看所有的recoverycheckpoint是否停止在相同的sequence#和RBA上,以及所有的current checkpoint是否停止在相同的sequence#和RBA上,如果都停在相同的checkpoint上,则继续进行下面的步骤,否则需要重复上述4—7的步骤。

    GGSCI> info ext*,showch

    。。。。。。。。。。。。。。。。。。。。。。。。。省略部分内容

    Recovery Checkpoint (position of oldest unprocessed transaction in the data source):

    Sequence #: 26

        RBA: 7088144

    Timestamp: 2011-01-28 10:02:16.000000

    Redo File: C:ORACLEPRODUCT10.2.0ORADATAORCLREDO02.LOG

    Current Checkpoint (position of last record read in the data source):

     Sequence #: 26

        RBA: 7090688

    Timestamp: 2011-01-28 10:02:16.000000

    Redo File: C:ORACLEPRODUCT10.2.0ORADATAORCLREDO02.LOG

    。。。。。。。。。。。。。。。。。。。。。。。。。省略部分内容

    9、停止所有的datapump进程,同上述方法2。

    10、停止所有的replicat进程,同上述方法3。

    11、停止源端和目标端mgr进程。

    12、完整备份源端和目标端的Goldengate安装目录,然后将dirdat目录清空

    13、拷贝原有的extract参数文件为重命名后的参数文件,修改参数文件内容如下:

    extractextract_newname

    。。。

    discardfile./dirrpt/extract_newname.dsc,append,megabytes 1000

    。。。

    exttrail ./dirdat/xx

    其中xx为新的队列文件前缀

    table。。。

    将所有抽取进程的表合并在一起。

    这里可以将所有要合并的extract进程,合并到原有的一个进程中,不修改进程名称。

    9、增加新的extract,datapump和replicat

    ------------------------------源端--------------------------------------------------

    GGSCI> add extractextract_newname, tranlog, begin now[, threads n]

    EXTRACT added.

    GGSCI> add exttrail ./dirdat/xx, extextract_newname, megabytes 50

    EXTTRAIL added.

    其中xx为新的队列文件前缀

    增加datapump进程,指定为新的队列文件前缀xx

    编辑参数文件,修改如下内容:

    extractdatapump _newname

    。。。

    rmttrail ./dirdat/xx

    table。。。

    复制修改后extract进程的表清单

    GGSCI > add extractdatapump_newname, exttrailsource ./dirdat/xx

    EXTRACT added.

    GGSCI > add rmttrail ./dirdat/xx, extractdatapump_newname, megabytes 50

    RMTTRAIL added.

    --------------------------------------目标端--------------------------------------------------

    针对每个replicat进程,删除原有的replicat进程,重新添加replicat进程,指定为新的队列文件前缀xx

    GGSCI>deletereplicat_name

    GGSCI > add rep replicat_name, exttrail ./dirdat/xx

    REPLICAT added.

    如果原有多个replicat进程,按照上述方式修改

    10、修改新增extract进程的检查点

    如果第13步,采用了合并到已有进程的方式,检查点是正确的,通过“INFO ext…, showch”命令进行验证,此时可以不用进行检查点的修改。

    --修改current read checkpoint

    GGSCI > alter extract extract_newnameextseqno26 extrba7090688 [, thread n]

    EXTRACT altered.

    --修改recovery checkpoint

    GGSCI > alter extract extract_newnameioextseqno26, ioextrba7088144 [, thread n]

    2011-01-28 10:46:18  INFOOGG-00989  WARNING: Unsupported operation. This might cause transactional inconsistency. Modifying iocheckpoint: ioseq = 26 iorba = 7088144.

    Are you sure you want to continue? y

    EXTRACT altered.

    11、启动新的extract进程

    12、启动新的datapump进程

    13、如果工作正常,删除所有合并之前的extract和datapump进程

    GGSCI>delete extract extract_oldname

    14、启动新的replicat进程

    15、如果工作正常,删除所有合并之前的repicat进程。

    16、删除gg_user下的ea_commit表,在sqlplus中执行如下语句:

    SQL> conn gg_user/****

    SQL> drop tablegg_user.ea_commit;

    3.4.  注意事项

    Extract进程合并通常采用初始化的方式进行,鉴于国网目前应用系统数据量较大,为节省合并的工作时间,在合并时应注意以下问题:

    1、在extract进程合并过程中,禁止删除数据库归档文件。

    2、在extract进程合并之前,完整备份源端和目标端GoldenGate安装目录下所有文件。

    3、在extract进程合并之前,将manager参数文件中的AUTOSTART、AUTORESTART和PURGEOLDEXTRACTS参数注释掉。

    4.      复制进程的拆分

    4.1.  拆分原则

    原则  1:复制与抽取进程尽量一一对应,一个抽取可以对应多个复制进程。

    原则  2:复制出现性能问题,首先考虑数据库性能调优。

    原则  3:复制进程尽量少,如果一个复制进程不能满足性能要求,则按照以下原则进行拆分。

    原则  3: Replicat进程性能不仅取决于OGG进程拆分,也和数据库本身有关,应先考虑数据库优化,其次再进行进程拆分考虑。(例如:表有无索引等)

    原则  4:所有Replicat进程负载要均衡。

    4.2.  拆分细则(需要ORACLE输入)

    4.3.  拆分步骤(需要ORACLE输入)

    拆分考量点:

    1.  调研大事物

    2.  热点表,大数据表

    3.  OGG Stats rep×。观察数据增量

    4.  DB记录数,变化量

    5    拆分进程数量限制对应CPU数

  • 相关阅读:
    Linux文件系统结构
    JAVA实现上传下载共享文件
    JAVA 实现通过URL下载文件到本地库
    使用SoapUI 测试 Web Service
    DB2存储过程实现查询表数据,生成动态SQL,并执行
    DB2查看表空间大小及使用情况
    Spring使用总结
    Commons-logging + Log4j
    JAVA生成EXCEL图表
    html5离线缓存原理
  • 原文地址:https://www.cnblogs.com/l10n/p/7529126.html
Copyright © 2020-2023  润新知