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:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO02.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:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO02.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:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO02.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:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO02.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:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO02.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数

Goldengate进程的合并与拆分规范的更多相关文章

  1. C# 合并及拆分Word文档

    本文简要分析一下如何如何使用C#简单实现合并和拆分word文档.平时我们在处理多个word文档时,可能会想要将两个文档合并为一个,或者是将某个文档的一部分添加到另一个文档中,有的时候也会想要将文档拆分 ...

  2. C# 合并及拆分PDF文件

    C# 合并及拆分PDF文件 有时我们可能会遇到下图这样一种情况 — 我们需要的资料或教程被分成了几部分存放在多个PDF文件中,不管是阅读还是保存都不是很方便,这时我们肯定想要把这些PDF文件合并为一个 ...

  3. 用飞信监控GoldenGate进程

    监控GoldenGate进程 1)         在goldengate安装目录下建立文件ogginfo $vim ogginfo  info all 2)         配置飞信报警       ...

  4. Java 合并、拆分PDF文档

    处理PDF文档时,我们可以通过合并的方式,来任意组几个不同的PDF文件或者通过拆分将一个文件分解成多个子文件,这样的好处是对文档的存储.管理很方便.下面将通过Java程序代码介绍具体的PDF合并.拆分 ...

  5. C# 合并、拆分PPT幻灯片

    概述 通过合并.拆分的功能,将不同的文档中的幻灯片进行组合形成新的的文档,同时也可以将一个多页的PPT文档按页拆分成多个不同的文档.此功能也丰富了编程人员对PPT幻灯片的操作的选择.下面将分别从以下几 ...

  6. Spark DataFrame列的合并与拆分

    版本说明:Spark-2.3.0 使用Spark SQL在对数据进行处理的过程中,可能会遇到对一列数据拆分为多列,或者把多列数据合并为一列.这里记录一下目前想到的对DataFrame列数据进行合并和拆 ...

  7. 详解CorelDRAW中如何合并与拆分对象

    合并两个或多个对象可以创建带有共同填充和轮廓属性的单个对象,以便将这些对象转换为单个曲线对象.可以合并的对象包括矩形.椭圆形.多边形.星形.螺纹.图形或文本等,本教程将详解CorelDRAW中关于合并 ...

  8. [.NET开发] C# 合并、拆分PDF文档

    在整理文件时,将多个同类型文档合并是实现文档归类的有效方法,也便于文档管理或者文档传输.当然,也可以对一些比较大的文件进行拆分来获取自己想要的部分文档.可以任意地对文档进行合并.拆分无疑为我们了提供极 ...

  9. GoldenGate 进程

    GoldenGate进程 Manager进程 Manager进程是GoldenGate的控制进程,运行在源端和目标端上.它主要作用有以下几个方面:启动.监控.重启Goldengate的其他进程,报告错 ...

随机推荐

  1. [JZOJ 5905] [NOIP2018模拟10.15] 黑暗之魂(darksoul) 解题报告 (拓扑排序+单调队列+无向图基环树)

    题目链接: http://172.16.0.132/senior/#main/show/5905 题目: oi_juruo热爱一款名叫黑暗之魂的游戏.在这个游戏中玩家要操纵一名有 点生命值的无火的余灰 ...

  2. 极客时间 Mysql实战45讲 07讲行锁功过:怎么减少行锁对性能的影响笔记 极客时间

    极客时间 Mysql实战45讲 07讲行锁功过:怎么减少行锁对性能的影响笔记 极客时间极客时间 Mysql实战45讲 07讲行锁功过:怎么减少行锁对性能的影响笔记 极客时间 笔记体会: 方案一,事务相 ...

  3. BZOJ 2301 莫比乌斯函数+分块

    思路: 同BZOJ1101 就是加个容斥 - http://blog.csdn.net/qq_31785871/article/details/54340241 //By SiriusRen #inc ...

  4. Devexpress控件使用二:barManager

    1.拖放控件 2.两种按钮显示形式 1)上面是大图标,下面是说明 a.Add → Largebutton 注:勾选 Show DesignTime enancements 才会出现Add b.添加图片 ...

  5. BAT 解密(四):配置中心、服务中心、异步技术细节

    在系列文章的第二篇文章< BAT解密(二):聊聊业务如何驱动技术发展 >中我们深入分析了互联网业务发展的一个特点:复杂性越来越高.复杂性增加的典型现象就是系统越来越多,当系统的数量增加到一 ...

  6. 使用python绘制词云

    最近在忙考试的事情,没什么时间敲代码,一个月也没几天看代码,最近看到可视化的词云,看到网上也很多这样的工具, 但是都不怎么完美,有些不支持中文,有的中文词频统计得莫名其妙.有的不支持自定义形状.所有的 ...

  7. Dapper基础知识三

    在下刚毕业工作,之前实习有用到Dapper?这几天新项目想用上Dapper,在下比较菜鸟,这块只是个人对Dapper的一种总结. Dapper,当项目在开发的时候,在没有必要使用依赖注入的时候,如何做 ...

  8. 模板层 Template

    每一个 Web 框架都需要一种很便利的方法用于动态生成 HTML 页面. 最常见的做法是使用模板. 模板包含所需 HTML 页面的静态部分,以及一些特殊的模版语法,用于将动态内容插入静态部分. 说白了 ...

  9. Python内置数据结构之字符串str

    1. 数据结构回顾 所有标准序列操作(索引.切片.乘法.成员资格检查.长度.最小值和最大值)都适用于字符串,但是字符串是不可变序列,因此所有的元素赋值和切片赋值都是非法的. >>> ...

  10. redis 多实例监控

    1.制作redis_low_discovery.sh脚本 mkdir -p /data/service/script/zabbix cd /data/service/script/zabbix cat ...