You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure Event Hub集成Debezium与PostgreSQL CDC时无法创建主题

问题排查与解决方案

现象回顾

  • 本地Docker部署的Kafka Connect可在Azure Event Hub中创建主题
  • Debezium PostgreSQL连接器状态显示为RUNNING,但向PostgreSQL表插入数据时,Event Hub无对应主题生成
  • Kafka Connect日志出现Broker断开警告:Bootstrap broker eventhubstandard.servicebus.windows.net:9093 (id: -1 rack: null) disconnected

排查步骤与解决方案

1. 修复Docker Compose环境变量冲突

你的Docker Compose配置中重复设置了CONNECT_SECURITY_PROTOCOL三次,会导致配置解析异常,特别是生产者/消费者的安全配置可能未正确生效。

修正后的环境变量片段:

# Connect Worker 全局安全配置
CONNECT_SECURITY_PROTOCOL: SASL_SSL
CONNECT_SASL_MECHANISM: PLAIN
CONNECT_SASL_JAAS_CONFIG: "org.apache.kafka.common.security.plain.PlainLoginModule required username=\"$ConnectionString\" password=\"你的Event Hub连接字符串\";"

# Connect Producer 专属配置
CONNECT_PRODUCER_SECURITY_PROTOCOL: SASL_SSL
CONNECT_PRODUCER_SASL_MECHANISM: PLAIN
CONNECT_PRODUCER_SASL_JAAS_CONFIG: "org.apache.kafka.common.security.plain.PlainLoginModule required username=\"$ConnectionString\" password=\"你的Event Hub连接字符串\";"

# Connect Consumer 专属配置
CONNECT_CONSUMER_SECURITY_PROTOCOL: SASL_SSL
CONNECT_CONSUMER_SASL_MECHANISM: PLAIN
CONNECT_CONSUMER_SASL_JAAS_CONFIG: "org.apache.kafka.common.security.plain.PlainLoginModule required username=\"$ConnectionString\" password=\"你的Event Hub连接字符串\";"

注意:确保JAAS配置格式正确,连接字符串拥有Event Hub的管理、发送、接收权限,三个JAAS配置使用的连接字符串需对应正确的权限范围。

2. 验证PostgreSQL逻辑复制配置

即使连接器状态显示RUNNING,也可能未正确捕获数据库变更:

  • 检查wal_level:在Azure Portal的PostgreSQL服务器参数中,确认wal_level设置为logical,修改后需重启数据库实例
  • 验证用户权限:确保postgres用户拥有REPLICATION权限,且Docker容器的IP已加入PostgreSQL的防火墙允许列表
  • 检查复制槽:在PostgreSQL中执行SELECT * FROM pg_replication_slots;,确认存在以todos-server(对应database.server.name)开头的复制槽
  • 更换CDC插件:Azure PostgreSQL默认可能未预装wal2json,建议改用Debezium 1.2支持的pgoutput插件,修改连接器配置中的plugin.name: pgoutput

3. 确认Event Hub主题自动创建配置

  • 在Azure Portal的Event Hub命名空间配置中,开启AutoCreateTopicsEnabled选项
  • 验证Debezium生成的主题名称todos-server.public.todos符合Event Hub命名规则(长度≤50,仅允许字母、数字、连字符、下划线、点)
  • 检查Event Hub命名空间的主题配额,确认未达上限

4. 镜像版本兼容性修复

你的Docker Compose中同时指定了两个镜像,最终生效的confluentinc/cp-server-connect-base:latest与Debezium 1.2.0.Final可能存在版本冲突:

  • 改用Debezium官方镜像:debezium/connect:1.2
  • 安装指定版本的连接器:将confluent-hub install命令改为confluent-hub install --no-prompt debezium/debezium-connector-postgresql:1.2.0.Final

5. 深入日志排查

查看Kafka Connect的完整日志,重点关注:

  • 连接器任务的启动日志,是否有PostgreSQL连接失败、复制槽创建失败的错误
  • 生产者发送消息时的认证、超时错误
  • Event Hub的连接状态日志

内容的提问来源于stack exchange,提问作者user3518397

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 12:35:30