Debezium心跳未提交LSN

问题描述

我们在Kafka Connect集群中部署了13个按Debezium监控的数据库(Amazon RDS)。 现在正在发生的事情是,这13个数据库中的1个具有一个复制插槽,该复制插槽的滞后性不断增加

12个数据库的延迟为10到120 kB,而其中一个数据库的延迟超过700 MB。

使用

SELECT slot_name,pg_size_pretty(pg_wal_lsn_diff(pg_current_wal_lsn(),restart_lsn)) as replicationSlotLag,confirmed_flush_lsn)) as confirmedLag,active
FROM pg_replication_slots;

replication slot lag

复制插槽处于活动状态;我检查了连接器的状态(GET kafka-connect:8083/<connector-name>/status),并且连接器和任务都处于RUNNING状态。

添加更多信息,我们启用了心跳和heartbeat.action.query,可以在发件箱表中定期插入虚拟事件,因此我希望每个受监视的数据库每10秒收到一次新更改

我们已经尝试:

  • 检查日志以了解心跳线程故障,但是我们没有看到任何异常
  • 重新启动群集,但滞后仍然存在
  • 检查滞后数据库的相关心跳主题,即使在群集重启后,那里也没有消息

任何人都知道发生了什么事吗?

解决方法

看起来在滞后的数据库上手动执行 heartbeat.action.query 可以解决问题...仍然不知道为什么或何时发生