Kafka 生产者创建 Debezium MySQL 连接器后无法创建主题并引发连续错误
Posted
技术标签:
【中文标题】Kafka 生产者创建 Debezium MySQL 连接器后无法创建主题并引发连续错误【英文标题】:Kafka producer can't create topics and throwing continuous error after creating Debezium MySQL connector 【发布时间】:2019-11-04 11:13:43 【问题描述】:我使用 Debezium 作为 CDC 工具从 mysql 流式传输数据。在将 Debezium MySQL 连接器安装到 Confluent OSS 集群后,我试图将 MySQL bin_log 更改捕获到 Kafka 主题中。当我创建连接器时,在拍摄数据库快照后,我会遇到一系列连续的错误。
我检查了 MySql bin_log 是否打开并尝试使用不同的序列化程序重新启动模式注册表和连接器。但我遇到了同样的错误。
错误日志显示:
[2019-06-21 13:56:14,885] INFO Step 8: - Completed scanning a total of 955 rows from table 'mydb.test' after 00:00:00.086 (io.debezium.connector.mysql.SnapshotReader:565)
[2019-06-21 13:56:14,886] INFO Step 8: scanned 1758 rows in 2 tables in 00:00:00.383 (io.debezium.connector.mysql.SnapshotReader:601)
[2019-06-21 13:56:14,886] INFO Step 9: committing transaction (io.debezium.connector.mysql.SnapshotReader:635)
[2019-06-21 13:56:14,887] INFO Completed snapshot in 00:00:01.055 (io.debezium.connector.mysql.SnapshotReader:701)
[2019-06-21 13:56:14,965] WARN [Producer clientId=producer-5] Error while fetching metadata with correlation id 11 : kbserver=UNKNOWN_TOPIC_OR_PARTITION (org.apache.kafka.clients.NetworkClient:968)
[2019-06-21 13:56:15,066] WARN [Producer clientId=producer-5] Error while fetching metadata with correlation id 12 : kbserver=UNKNOWN_TOPIC_OR_PARTITION (org.apache.kafka.clients.NetworkClient:968)
[2019-06-21 13:56:15,168] WARN [Producer clientId=producer-5] Error while fetching metadata with correlation id 13 : kbserver=UNKNOWN_TOPIC_OR_PARTITION (org.apache.kafka.clients.NetworkClient:968)
[2019-06-21 13:56:15,269] WARN [Producer clientId=producer-5] Error while fetching metadata with correlation id 14 : kbserver=UNKNOWN_TOPIC_OR_PARTITION (org.apache.kafka.clients.NetworkClient:968)
[2019-06-21 13:56:15,370] WARNDebezium [Producer clientId=producer-5] Error while fetching metadata with correlation id 15 : kbserver=UNKNOWN_TOPIC_OR_PARTITION
我发送的连接器有效负载如下:
"name": "debezium-connector",
"config":
"connector.class": "io.debezium.connector.mysql.MySqlConnector",
"tasks.max": "1",
"key.serializer": "io.confluent.connect.avro.AvroConverter",
"value.serializer": "io.confluent.connect.avro.AvroConverter",
"database.hostname": "localhost",
"database.port": "3306",
"database.user": "test",
"database.password": "test@123",
"database.whitelist": "mydb",
"table.whitelist": "mydb.test",
"database.server.id": "1",
"database.server.name": "kbserver",
"database.history.kafka.bootstrap.servers": "kafka:9092",
"database.history.kafka.topic": "db-schema.mydb",
"include.schema.changes": "true"
有人知道为什么会发生这种情况或我该如何解决?
【问题讨论】:
可能需要设置auto.create.topics.enable 我没有看到任何ERROR
,只有WARN
。连接器是否真的失败了,或者你只是没有在你认为应该的时候获取数据?
@RobinMoffatt 没有连接器没有失败,它不能自动为每个表创建主题以生成消息。
@dmkvl 在代理配置中启用auto.create.topics.enable
确实有效。非常感谢您的建议。
您的问题解决了吗?我遇到了同样的问题,所以看看这里是否有任何更新。
【参考方案1】:
请参考database.whitelist
和table.whitelist
。它们不一致。
它应该是mydb
和mydb.test
或db
和db.test
,具体取决于数据库的名称。
【讨论】:
是的,实际上是打错了。现在已经更正了。但问题依然存在。以上是关于Kafka 生产者创建 Debezium MySQL 连接器后无法创建主题并引发连续错误的主要内容,如果未能解决你的问题,请参考以下文章
Debezium Postgres Kafka 没有创建主题
MySQL使用Debezium更改为Kafka-仅捕获DDL stmts
是否可以为一个带有使用 debezium 和 kafka 的表的数据库创建一个 Elasticsearch 索引?
Flink系列之:Debezium采集Mysql数据库表数据到Kafka Topic,同步kafka topic数据到StarRocks数据库