GoldenGate自动归档discard文件

1.背景

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

  1. ggserr.log记录重要的日志,如进程启停、进程失败abend及响应ggsci命令的响应输出。
  2. discard文件,是丢弃文件,在备机端,同步环境没有问题的前提下,在执行具体某个sql时失败,会把执行失败的sql放入到discard文件。

由此看出,discard文件很重要,是运维发现哪些表主从不一致的重要线索。

2.当前环境的问题

当前设置如下:

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

会出现2个问题:

  1. discard文件太小:只有200M,持续运行N天后,会满。
  2. 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

经过观察,

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

猜你喜欢

转载自blog.csdn.net/heroicpoem/article/details/106732288