序
当时写的这个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,注意权限
彩蛋
出现这个问题,我也百度
结果我看了第一篇,竟然都是我之前在掘金发的,但是被搬走了 哈哈
我以为是偶然的事情,我有看了别的文章,竟然 。。。。
这篇也是我的 哈哈
代码
需要代码可以去看
人生准则
父母的关怀是生命之树的根,愿我们都成为那养育之手,对他们的爱如深潭而静,正义在每一次回馈中得以显现 - 雨夜之寂