OMS 增量同步 postgresql时未及时更新confirmed_flush_lsn导致wal日志堆积

【 使用环境 】 测试环境
【 OB or 其他组件 】OMS
【 使用版本 】4.2.8_CE
【问题描述】 使用 OMS 配置 PGTOOB 的增量同步任务后,发现 wal 日志持续增大。

PG 数据库为 15.3
查询复制槽WAL日志相关信息:
SELECT slot_name, active, restart_lsn,
confirmed_flush_lsn, pg_walfile_name(confirmed_flush_lsn),
pg_current_wal_lsn(),
pg_size_pretty(pg_wal_lsn_diff(pg_current_wal_insert_lsn(), restart_lsn)) AS delay_size
FROM pg_replication_slots;

oms_np_6l58twh6g0qo_1742450330646 true 379/DB0706A0 379/DB0706D8 0000000100000379000000DB 387/1C0FBFB0 53 GB
oms_np_6lk4h8obinkw_1742810560622 true 384/87AC06F0 384/87AC0808 000000010000038400000087 387/1C0FBFB0 10 GB

发现 confirmed_flush_lsn 没有更新。

任务中的增量任务正常运行中,也能够正常监控到数据写入并更新到 OB 中。

在官方文档中看到增量同步的描述:
增量同步任务开始后,OMS 社区版会同步源库发生变化的数据(新增、修改或删除)至目标端数据库对应的表中。
PostgreSQL 数据库作为源端的增量同步会自动创建 publication 和 slot。但是需要用户来监测归档文件的磁盘使用情况。OMS 社区版默认每 10 分钟通知更新一次 slot 的 confirmed_flush_lsn,间隔周期支持配置。并且默认归档文件需要保存 48 小时,因此只会通知可清理超过 48 小时以上的归档日志(可配置)。

不知道是否是confirmed_flush_lsn通知上有问题导致数据库未能够清理过期 wal日志?

2 个赞

/home/ds/store/store{端口}/log/connector下面的connector.log上传看一下

2 个赞

是否存在多条链路,不用的链路释放掉

2 个赞

:+1: :+1: :+1:

1 个赞

学习学习

2 个赞

总共就 2 个在进行的任务,其他任务都已经释放了,而且也杀掉了不用的复制槽

1 个赞

sync-0320-connector.log (42.7 KB)

557 [2025-03-26 10:44:57.599] [INFO] [Thread-6] try to notify clean up archive logs before this lsn:1742930419

558 [2025-03-26 10:44:57.599] [INFO] [Thread-6] not need to notify clean up archive logs, because within archive log keep range

我想知道 这里的1742930419 是哪里来的?

2 个赞

改值来自store目录下的drc.topics.xxx这个文件中的key=end
“end”:[4294967295,0,0,74157328,xxx,0],xxx表示的是store的最大位点时间,如下图所示


store进程会有一个后台定时任务,每隔confirmed_flush_lsn_save_interval_seconds配置秒执行一次(默认5分钟)
archive_log_keep_seconds这个配置是归档保留的秒(默认10分钟),当前时间-archive_log_keep_seconds得到的时间点之前的归档都会ConfirmLsn

可以搜索关键字"notify clean up archive log which before timestamp" 查看ConfirmLsn的时间

1 个赞

cat drc.topics.POSTGRESQL_np_6l58twh6g0qo_6l591qo4hreo.POSTGRESQL_np_6l58twh6g0qo_6l591qo4hreo-1-0.10.21.11.12-7100:P

OSTGRESQL_np_6l58twh6g0qo_6l591qo4hreo-1-0:0000000008.-.0

{

“gmt”:1742971168,

“begin”:[4294967295,0,0,3877728981040,1742885486,0],

“end”:[4294967295,0,0,3882001863432,1742930419,0],

“source”:""}

1 个赞

但是我在 PG 复制槽信息中并没有发现confirmed_flush_lsn 被更新了。

oms_np_6l58twh6g0qo_1742450330646 true 379/DB0706A0 379/DB0706D8 0000000100000379000000DB 389/5ECE85C0 00000001000003890000005E 62 GB
oms_np_6lk4h8obinkw_1742810560622 true 384/87AC06F0 384/87AC0808 000000010000038400000087 389/5ECE85C0 00000001000003890000005E 19 GB

可以看到,还是379/DB0706D8

1 个赞

到oms容器中/home/ds/store/store{端口}/log/connector/connector.log 完整的发一个,按小时归档的

1 个赞

之前发的就是最近一小时的日志,提供下最早的一个
还是20 号到现在这7 天的都要么?
connector.log (950.7 KB)

connector.2025-03-20_13_0.log.gz (331.3 KB)
connector.2025-03-20_14_0.log.gz (4.1 MB)
connector.2025-03-26_14_0.log.gz (6.9 KB)
connector.2025-03-26_16_0.log.gz (2.5 KB)

1 个赞

最近的

1 个赞

connector.log (11.3 KB)

L_np_6l58twh6g0qo_6l591qo4hreo-1-0:0000000008.-.0

{

“gmt”:1742976839,

“begin”:[4294967295,0,0,3878373933048,1742893680,0],

“end”:[4294967295,0,0,3888555914576,1742972110,0],

“source”:""}

1 个赞

最早的和最新的都在上面了

1 个赞

几个文件都打不开

1 个赞

zgrep “timestamp to lsn map” connector.*gz
zgrep “notify clean up archive log which before timestamp” connector.*gz

1 个赞

我重新上传了一份,都是可以解压缩成功的

1 个赞

lsnmap.log (24.0 KB)

第一句的结果见文档。
第二句未搜索到对应内容

1 个赞

学习学习