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:\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进程的合并与拆分规范的更多相关文章
- C# 合并及拆分Word文档
本文简要分析一下如何如何使用C#简单实现合并和拆分word文档.平时我们在处理多个word文档时,可能会想要将两个文档合并为一个,或者是将某个文档的一部分添加到另一个文档中,有的时候也会想要将文档拆分 ...
- C# 合并及拆分PDF文件
C# 合并及拆分PDF文件 有时我们可能会遇到下图这样一种情况 — 我们需要的资料或教程被分成了几部分存放在多个PDF文件中,不管是阅读还是保存都不是很方便,这时我们肯定想要把这些PDF文件合并为一个 ...
- 用飞信监控GoldenGate进程
监控GoldenGate进程 1) 在goldengate安装目录下建立文件ogginfo $vim ogginfo info all 2) 配置飞信报警 ...
- Java 合并、拆分PDF文档
处理PDF文档时,我们可以通过合并的方式,来任意组几个不同的PDF文件或者通过拆分将一个文件分解成多个子文件,这样的好处是对文档的存储.管理很方便.下面将通过Java程序代码介绍具体的PDF合并.拆分 ...
- C# 合并、拆分PPT幻灯片
概述 通过合并.拆分的功能,将不同的文档中的幻灯片进行组合形成新的的文档,同时也可以将一个多页的PPT文档按页拆分成多个不同的文档.此功能也丰富了编程人员对PPT幻灯片的操作的选择.下面将分别从以下几 ...
- Spark DataFrame列的合并与拆分
版本说明:Spark-2.3.0 使用Spark SQL在对数据进行处理的过程中,可能会遇到对一列数据拆分为多列,或者把多列数据合并为一列.这里记录一下目前想到的对DataFrame列数据进行合并和拆 ...
- 详解CorelDRAW中如何合并与拆分对象
合并两个或多个对象可以创建带有共同填充和轮廓属性的单个对象,以便将这些对象转换为单个曲线对象.可以合并的对象包括矩形.椭圆形.多边形.星形.螺纹.图形或文本等,本教程将详解CorelDRAW中关于合并 ...
- [.NET开发] C# 合并、拆分PDF文档
在整理文件时,将多个同类型文档合并是实现文档归类的有效方法,也便于文档管理或者文档传输.当然,也可以对一些比较大的文件进行拆分来获取自己想要的部分文档.可以任意地对文档进行合并.拆分无疑为我们了提供极 ...
- GoldenGate 进程
GoldenGate进程 Manager进程 Manager进程是GoldenGate的控制进程,运行在源端和目标端上.它主要作用有以下几个方面:启动.监控.重启Goldengate的其他进程,报告错 ...
随机推荐
- 火狐访问IIS出现404,而Chrome可以正常访问
需要在web.config中的handlers中添加如下节点,保存之后,需要重启电脑. <remove name="ExtensionlessUrlHandler-Integrated ...
- [JZOJ 5875] [NOIP2018提高组模拟9.20] 听我说,海蜗牛 解题报告(BFS+二分)
题目链接: http://172.16.0.132/senior/#main/show/5875 题目: 题解: 注意这题只能经过开放的港口 我们考虑用vector存下每个点不能到的点,并把并让vec ...
- Ubuntu14.04下Mongodb(在线安装方式|apt-get)安装部署步骤(图文详解)(博主推荐)
不多说,直接上干货! 本博文介绍了MongoDB,并详细指引读者在Ubuntu下MongoDB的安装和使用.本教程在Ubuntu14.04下测试通过. 一.MongoDB介绍 MongoDB 是一个是 ...
- lucene简单使用demo
测试结构目录: 1.索引库.分词器 Configuration.java package com.test.www.web.lucene; import java.io.File; import or ...
- SpringMVC学习(二)——SpringMVC架构及组件(及其运行原理)-转载
相信大家通过前文的学习,已经对SpringMVC这个框架多少有些理解了.还记得上一篇文章中SpringMVC的处理流程吗? 这个图大致描述了SpringMVC的整个处理流程,这个流程图还是相对来说比 ...
- Docker学习笔记(1)----认识Docker
1. 什么Docker? Docker是一个能把开发的应用程序自动部署到容器的引擎,它使用go语言编写的开源引擎,它在github上面个的地址为:https://github.com/docker/d ...
- SpringCloud学习笔记(4)----Spring Cloud Netflix之Eureka的配置
1. Eureka监控配置 Eureka的客户端需要加入依赖 <dependency> <groupId>org.springframework.boot</groupI ...
- 《Unix环境高级编程》读书笔记 第4章-文件和目录
1. stat结构的基本形式: on error 24. 设备特殊文件 每个文件系统所在的存储设备都由其主.次设备号表示. 设备号所用的数据类型是基本系统数据类型dev_t. 主设备号标识设备驱动程序 ...
- 3ds Max做的卡通狗教程
使用软件::3ds Max 软件下载:http://www.xy3dsmax.com/xiazai.html 全教程完,学完记得交作业.如果本教程对您有所帮助,请推荐给你的朋友.
- 使用java向邮箱发送邮件
这是我很早之前写的一个工具类,最近在整理自己所学的东西,无意中找到了,就拿出来与大家分享,代码如下: import java.io.ByteArrayOutputStream; import java ...