OGG复制进程延迟处理思路与方法

作者简介:王坤,北京海天起点技术服务股份有限公司高级DBA。具有Oracle OCP认证。2015年加入海天大家庭后,一直担任北京海天湖南办驻湖南电力信通公司现场高级数据库工程师。主要负责Oracle Goldengate运维工作。在Ogg整体架构部署、设计及实施、性能优化等方面有丰富的实践经验。

在我们日常的OGG运维过程中难免会遇到复制进程延迟的现象,这种数据同步不及时的现象对那些数据实时要求较高的应用系统影响比较大,下面我们通过数据库与OGG进程两个层面来简单讨论一下都有些什么方法缓解这一问题

(一)、在复制端数据库删除不必要的索引。我们在做OGG数据初始化时,大多数都是将表所用索引导入到目标库。我们知道索引的建立对于查询的帮助很大,对插入与更新就不尽然了。而一般情况下我们的源端与目标端同步表的实现功能往往是不一样的,当我们源端复制表索引较多,目标端查询用不到时,我们可以drop掉这些多余索引。(二)、复制端更改分区表索引类型,将分区表的全局索引修改为本地索引,这个情形适合分区较多,数据较大的分区表的复制,本地索引对分区表的插入更新效率更高。(三)、复制库表分析。对有条件的复制端数据库我们可以定期的进行对复制表进行表分析,获得最新的表统计信息。(四)、删除表历史数据。这样做的原因想必大家都了解。但这种情况比较特殊也比较危险,适用只有插入操作的日志表。在没有配置get truncate参数或目标端不需要历史数据时可以考虑。

当然我们在数据库层面能做的事情远远不止这一些,各种数据库优化的方法就不再讨论。

下面我们来讨论下OGG软件层面怎么缓解延迟这一问题:其实就是一个字’拆’。OGG复制进程的原理是单个复制进程读取队列文件中的数据来匹配自己参数配置表的列表依次以事务为单位还原到目标数据库中执行。所以当我们一个进程中出现多个热点表时,就有可能出现CPU、IO等等待现象造成延迟。这是我们可以将其中一部分热点表拆分到另外一个进程来缓解。具体步骤如下:

示例将repa中的test表加入到repb中

一、新建复制进程

edit params repb

—将拆分出来的表放入参数中

map user.test,target user.test

add replicat repyb, exttrail /goldengate/dirdat/xx

二、停止原来的复制进程,并获取rba号

stop repa

Info repa

输出结果如下:

REPLICAT    REPA     Last Started 2017-04-01 09:55    Status STOPED
Checkpoint Lag           00:00:00 (updated 00:00:02 ago)
Log Read Checkpoint  File ./dirdat/xx091249
                                    2017-05-18 16:32:40.000506  RBA 13442118

三、修改新增进程启动点

alter replicat repb, extseqno 91249 extrba 13442118

四、启动进程

tart repa
start repb

有的朋友可能会有疑问,只剩一张表还是有延迟怎么办,方法还是可以拆,方法与上面基本一致:

repa参数:

map user.test,target user.test,FILTER(@RANGE (1,2));

repb参数:

map user.test,target user.test,FILTER(@RANGE (2,2));

其他操作方法与上面一致

test拆分成了2份两个进程进行同步。

分别设置filter(@range(1…n,n)这样就可以拆成n个线程来同步我们延迟大的数据表。

但是此种方法比较极端,稳定性不如整表复制。我测试过,但是数据表只同步了部分数据,可能是参数设置有误,或者版本支持度不够,后来从索引方面找到解决方法就没有深究了。大家有需要的可以研究下,相信此功能还是可以实现的。

当然我们的实际情况可能比上述情况远远复杂得多,甚至有带宽影响投递队列速率从而影响复制进程延迟的。我们就需要具体原因具体分析了,但总体我们可以从OGG软件进程配置优化、数据库优化和硬件优化三个方面着手。

转载于:https://my.oschina.net/u/3506264/blog/914418

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值