pgsql binlog监听 后续

569 阅读1分钟

当时写的这个binlog 监听组件从去年到现在一直在线上跑着,很稳定,今天又监听了其他的数据库,但是出现了 能接受心跳,但是delay_size 不减少,被老大抓住找问题,这个新的监听数据库 是昨天添加的

之前文章

pgsql binlog监听 - 掘金 (juejin.cn)

问题

binlog接收和 消费都很正常,但是delay_size 不减少,而其他的数据库delay_size 是一直变化的

问题原因

PostgreSQL实例包含多个数据库,其中一个是高流量数据库。Debezium监视另一个数据库,与另一个数据库相比,它的流量较低。然后,Debezium无法确认LSN,因为每个数据库都有复制槽工作,并且不会调用Debezium。由于WAL由所有数据库共享,它倾向于增长,直到由Debezium监视的数据库发出事件。

其实就一句话 不同数据库的 流量不一样,Debezium无法确认LSN

解决办法

props.setProperty("heartbeat.action.query", "INSERT INTO public.heartbeat (id, ts) VALUES (1, NOW()) ON CONFLICT(id) DO UPDATE SET ts=EXCLUDED.ts;");

在其对应的数据库中 添加对应的表,注意:一定要把表给你的cdc_user,注意权限

彩蛋

出现这个问题,我也百度

5cd5b66685f3aa540c581d59d22bce4.png

结果我看了第一篇,竟然都是我之前在掘金发的,但是被搬走了 哈哈

我以为是偶然的事情,我有看了别的文章,竟然 。。。。

www.ufcn.cn/it/1138180.…

这篇也是我的 哈哈

image.png

代码

需要代码可以去看

github.com/a25017012/y…

人生准则

父母的关怀是生命之树的根,愿我们都成为那养育之手,对他们的爱如深潭而静,正义在每一次回馈中得以显现 - 雨夜之寂