Debezium Kafka Connect 需要重新启动才能使 PostgreSQL cdc 工作

Posted

技术标签:

【中文标题】Debezium Kafka Connect 需要重新启动才能使 PostgreSQL cdc 工作【英文标题】:Debezium Kafka Connect requires restart for PostgreSQL cdc to work 【发布时间】:2020-03-23 05:21:04 【问题描述】:

我正在尝试使用 debezium kafka 进行 cdc 连接,并使用以下设置:

动物园管理员 卡夫卡 PostgreSQL Kafka Connect Debezium

我也在按这个顺序配置和启动它们。

在启动 Kafka Connect Debezium 后,我做一个 POST 来配置它:


  "name": "postgres-boxes-connector",
  "config": 
    "connector.class": "io.debezium.connector.postgresql.PostgresConnector",
    "database.hostname": "172.17.0.4",
    "database.port": "5432",
    "database.user": "postgres",
    "database.password": "postgres",
    "database.dbname" : "postgres",
    "database.server.name": "fullfillment",
    "table.whitelist": "public.boxes"
  

启动我的观察者后,我看到以下警告/错误:

WARN [Consumer clientId=consumer-1, groupId=console-consumer-53726] Error while fetching metadata with correlation id 2 : fullfillment.public.boxes=LEADER_NOT_AVAILABLE (org.apache.kafka.clients.NetworkClient)

现在,当我重新启动 Kafka Connect Debezium 时,一切正常,没有错误,而且 cdc 工作正常。

我现在正试图弄清楚为什么我必须重新启动 Kafka Connect 才能使其工作,并希望它可以避免。如果需要更多信息,我很乐意提供更多信息。

【问题讨论】:

你确定不重启Kafka Connect worker就不行吗? LEADER_NOT_AVAILABLE 通常在创建新主题时出现 - 然后随后创建。 很确定它没有,但是我确实尝试在完成设置后立即更新记录。会不会有某种形式的延迟?无论如何,我们明天再试一次,我会发布更新 所以你看到的只是WARN,表示任务继续执行。如果您再次遇到这种情况,更详细地准确解释什么不起作用/症状是什么会很有用。 @RobinMoffatt 我们已经重新尝试从头开始设置所有内容,但没有遇到问题。感谢您的澄清。 很高兴它正在工作。如果您同意,我已经发布了一个答案供您接受,以便其他找到此帖子的人可以清楚地看到结果。 【参考方案1】:

您必须重新启动工作程序才能在安装连接器插件时选择它。除此之外,无需重新启动 Connect 工作程序即可使连接器正常工作。

您看到的只是WARN,表示任务继续执行。 LEADER_NOT_AVAILABLE 通常在创建新主题时看到 - 然后随后创建(如果您连续看到 LEADER_NOT_AVAILABLE 并且它没有停止,则表明该主题尚未自动创建,您可能需要创建它手动)。

【讨论】:

以上是关于Debezium Kafka Connect 需要重新启动才能使 PostgreSQL cdc 工作的主要内容,如果未能解决你的问题,请参考以下文章

kafka connect debezium mongodb连接器无法加载

Kafka Connect Debezium postgres

如何将 kafka-connect-jdbc-5.5.0.jar 添加到 Debezium/connect

无法在启用 SSL 的 Kafka 集群中注册 Debezium (Kafka-Connect) 连接器

Kafka Connect:使用 debezium 从 Postgres 流式传输更改到主题

如何通过 Debezium Connect 反序列化来自 Kafka 消息流的几何字段?