未提供查询时,Kafka mysql 连接器配置文件不起作用

Posted

技术标签:

【中文标题】未提供查询时,Kafka mysql 连接器配置文件不起作用【英文标题】:Kafka msql connector configuration file doesnot work when query is not provided 【发布时间】:2021-03-09 00:21:22 【问题描述】:

我有一个 Kafka 的配置文件,它可以很好地从 mysql 数据库中读取数据

name=local-jbdc
connector.class=io.confluent.connect.jdbc.JdbcSourceConnector
connection.url=jdbc:mysql://localhost:3306/book
connection.user=root
connection.password=newpass
topic.prefix=quickstart-events
mode=incrementing
incrementing.column.name=__id
query=select * from book_table
offset.flush.timeout.ms=5000
buffer.memory=200
poll.interval.ms=10000
tasks.max=1

现在,当我取出 query 并提供 table.whitelist 时,它不会读取任何内容。甚至没有错误。

配置如下图

name=local-jbdc
connector.class=io.confluent.connect.jdbc.JdbcSourceConnector
connection.url=jdbc:mysql://localhost:3306/book
connection.user=root
connection.password=newpass
topic.prefix=quickstart-events
mode=incrementing
incrementing.column.name=__id
table.whitelist=book_table
offset.flush.timeout.ms=5000
buffer.memory=200
poll.interval.ms=10000
tasks.max=1

谁能帮我理解这个问题的根本原因。另外,我将如何为多个表执行增量模式。

编辑

当我用键盘上的 Ctrl+C 停止 kafka 时

有这样的日志出现

[2020-11-30 12:35:38,057] INFO [ReplicaManager broker=0] Shut down completely (kafka.server.ReplicaManager)
[2020-11-30 12:35:38,058] INFO Shutting down. (kafka.log.LogManager)
[2020-11-30 12:35:38,106] INFO [ProducerStateManager partition=connect-status-4] Writing producer snapshot at offset 394 (kafka.log.ProducerStateManager)
[2020-11-30 12:35:38,158] INFO [ProducerStateManager partition=__consumer_offsets-18] Writing producer snapshot at offset 1 (kafka.log.ProducerStateManager)
[2020-11-30 12:35:38,219] INFO [ProducerStateManager partition=quickstart-eventsbook_table-0] Writing producer snapshot at offset 19645 (kafka.log.ProducerStateManager)
[2020-11-30 12:35:38,239] INFO [ProducerStateManager partition=quickstart-book_table-0] Writing producer snapshot at offset 2652 (kafka.log.ProducerStateManager)```

【问题讨论】:

日志中有什么有趣的吗? 日志是干净的。您是否知道发生此类问题的任何情况。或者是因为我在独立模式下运行!或者有没有其他的配置方法我可以写来让它工作? @IskuskovAlexander 对此有任何想法 你能尝试在分布式模式下运行吗? @IskuskovAlexander 这几乎是一样的。当提供查询参数时,它会提取数据,但当没有查询参数时,它会保持不变。 【参考方案1】:

问题很简单。当提供 table.whitelist 时,连接器会创建一个主题,并将 topic.prefix 附加到表名。在我的例子中,它创建了一个名为 quickstart-eventsbook_table 的新主题。提供查询时,topic.prefix 也被视为发送数据的主题。

【讨论】:

以上是关于未提供查询时,Kafka mysql 连接器配置文件不起作用的主要内容,如果未能解决你的问题,请参考以下文章

Kafka 连接:提供了配置 XXX,但不是 AdminClientConfig 中的已知配置

MySql 查询在 Kafka-connect 中失败

mysql查询数据库连接数,顺利拿到offer

Java开发实战!mysql查询数据库连接数

Java开发实战!mysql查询数据库连接数

Mysql 多实例详细配置教程