Debezium升级至2.6.1后与PostgreSQL RDS创建复制槽阻塞
问题描述
升级与配置变更
- 将Debezium版本从
1.9.6.Final升级至2.6.1.Final - 配置项调整:替换
database.server.name为topic.prefix - 插件切换:弃用wal2json,改用pgoutput插件,所有数据库已执行
CREATE PUBLICATION dbz_publication FOR ALL TABLES;
部署架构
- Debezium以Java库形式运行在K8s集群中
- 单RDS PostgreSQL实例下的多数据库对应独立Debezium实例,各实例的
slot.name、name、topic.prefix均唯一,但所有数据库的发布名称统一为dbz_publication - 偏移量存储采用PostgreSQL表
异常表现
- 启动未创建过复制槽的数据库对应的Debezium实例时,复制槽创建完成后进程直接阻塞
- 停止Debezium实例后,对应复制槽仍处于活跃状态;重启实例时触发“复制槽已存在”的报错
- 执行
pg_terminate_backend杀死复制槽关联的PID后,重启Debezium仍会阻塞在复制槽创建环节
已尝试的无效操作
- 多次重启Debezium实例
- 手动终止复制槽关联的后端进程
- 清空偏移量存储表
- 回滚至Debezium
1.9.6.Final版本后,日志出现并发事务阻塞快照获取的告警
环境信息
- PostgreSQL:12.17(AWS RDS)
- Debezium:2.6.1.Final
- 变更后使用的CDC插件:pgoutput
内容的提问来源于stack exchange,提问作者Kanstantsin T.
相关产品推荐
相关产品推荐

