GoldenGate自动归档discard文件

 


1.背景
GoldenGate重要的日志文件有2个:ggserr.log和discard文件。

ggserr.log记录重要的日志,如进程启停、进程失败abend及响应ggsci命令的响应输出。
discard文件,是丢弃文件,在备机端,同步环境没有问题的前提下,在执行具体某个sql时失败,会把执行失败的sql放入到discard文件。
由此看出,discard文件很重要,是运维发现哪些表主从不一致的重要线索。

2.当前环境的问题

 


当前设置如下:

discardfile ./dirrpt/rept01.dsc , purge,megabytes 100


会出现2个问题:

discard文件太小:只有200M,持续运行N天后,会满。
discard文件会被覆盖:尤其重启replicat进程后,文件会被清空。

 

3.解决方法
修改控制参数,相关参数包括:

 

3.1.追加还是清空
指定discard文件名时一起设定为append追加。并调整最大大小。

Syntax DISCARDFILE <file name>
[, APPEND | PURGE]
[, MAXBYTES <n> | MEGABYTES <n>]

 

同时,如果文件大小超限后,进程就会退出,顾大小尽量设大。
To set an upper limit for the size of the file, use either the MAXBYTESor MEGABYTESoption. If the specified size is exceeded, the process will abend.

3.2. 定期归档
使用参数:discardrollover
本参数指定个时点,当到达时点时,自动归档discard文件。归档文件的格式是,<group name><n>.<extension>。

 

3.3.修改后
discardfile ./dirrpt/rept01.dsc , append,megabytes 2048
discardrollover at 05:30

 

经过观察,

确实在每天的05:30,自动创建个新的discard文件。
最新的归档总是从0号开始。假设现在已有2个归档文件,rept010.dsc\rept011.dsc;新归档后,已有的更名为rept010.dsc->rept011.dsc,rept011.dsc->rept012.dsc,
新的归档文件名为rept010.dec。
发现一个问题,虽然新生成了文件,但文件整个生命周期内,没有任何数据。
对比之前的内容,至少也该有类似trail文件切换的系想你;还有,中间有过4天数据不同步,肯定有无法更新、或删除的记录才对。

具体看handlecollisions参数介绍

 

上一篇:oracle同步软件技术实现对比


下一篇:springboot自定义注解,项目启动时扫描注解类并注入容器