PostgreSQL/Gaussdb源端作业如何查看已消费位点?
通过查看作业日志确认已消费位点
- 下载jobmanager日志,搜索关键字“Completed checkpoint”找到最新的一次已完成checkpoint,以下可以看到“checkpoint 2”为最新完成的检查点。
图1 下载jobmanager日志图2 搜索Completed checkpoint
- 下载taskmanager日志,搜索关键字“Stream split offset on checkpoint 2”,获取当前已消费到的LSN号 lsn=LSN{7/D80001B0}。然后通过SQL查找数据库中已有LSN号并排序,取所有小于日志中LSN号中最大的一个即为作业的已消费位点。参考SQL:
select concat(case when substring(name, 15, 1) = '0' then substring(name, 16, 1) else substring(name, 15, 2) end, '/', substring(name, 23, 2), '000000') as wal_lsn, modification from pg_ls_waldir() order by modification;
图3 下载taskmanager日志图4 搜索Stream split offset on checkpoint 2图5 时间转换
如上图例,我们在日志中查到的LSN=7/D80001B0,对比数据库的查询结果可以看到它处于1605行和1606间,即wal_lsn=7/D8000000 < LSN=7/D80001B0 < wal_lsn=7/D9000000,由此我们取wal_lsn=7/D8000000对应的modification时间'2025-07-29 07:43:47.000000+00:00'作为本次作业的已消费位点。
注意:
- 当作业存在多并发时会有多个taskmanager日志,只有其中的某一个taskmanager日志包含Stream split offset信息。
- 通过SQL获取到的wal_lsn modification时间采用了PostgreSQL数据库的时区,请自行将其结果转换为用户华为云账号所在Region时区的时间。
根据作业WAL抽取时延估算已消费位点
运行中的作业,查看监控信息,然后跳转“查看监控指标”,查看最近的一次时延上报情况。

如下图,2025-07-29 16:14:40的时候,时延处于毫秒级,可以认为作业没有时延,已消费位点可以粗略估计为“2025-07-29 16:10:00”,这里估测位点时往前回退几分钟更为安全,应尽量保证作业不丢数。
