Debezium PostgreSQL连接器运行正常但Kafka Topic无法创建
问题分析与解决方案
你遇到的核心问题是Debezium连接器配置提交成功,但未生成预期的CDC Topic,结合你的Kafka集群和连接器配置,主要排查及修复步骤如下:
1. 复制因子配置不匹配
你的Kafka集群包含3个broker,连接器配置中设置topic.creation.default.replication.factor: "1",但Kafka broker的系统Topic复制因子配置为3(如KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 3)。当KAFKA_AUTO_CREATE_TOPICS_ENABLE: "false"时,Connect自动创建Topic的复制因子需与集群能力兼容,建议将复制因子改为3,与集群配置统一:
修改连接器配置对应字段:
"topic.creation.default.replication.factor": "3"
2. 触发数据捕获动作
Debezium的CDC Topic通常在第一次捕获到数据变更时才会创建,而非连接器启动即生成。执行以下操作触发数据变更:
- 进入PostgreSQL容器:
docker exec -it postgres psql -U debezium -d inventory
- 插入测试数据:
INSERT INTO inventory.customers (id, first_name, last_name, email) VALUES (1001, 'John', 'Doe', 'john.doe@example.com');
3. 检查连接器运行状态
确认连接器是否正常运行:
curl -X GET http://localhost:8083/connectors/inventory-connector/status
若状态非RUNNING,查看Connect日志排查异常:
docker logs kafka-connect
4. 验证目标表存在性
确保inventory.customers表确实存在于PostgreSQL中:
SELECT * FROM information_schema.tables WHERE table_schema = 'inventory' AND table_name = 'customers';
5. 重新查看Kafka Topic列表
触发数据变更后,执行命令查看Topic:
docker exec kafka1 kafka-topics --list --bootstrap-server kafka1:19091
预期会出现dbserver1.inventory.customers目标Topic。
内容的提问来源于stack exchange,提问作者Mars
相关产品推荐
相关产品推荐

