使用Amazon MSK和Debezium SQL Server Connector出现UNKNOWN_TOPIC_OR_PARTITION报错
UNKNOWN_TOPIC_OR_PARTITION 错误排查解决步骤
- 首先确认MSK集群中是否存在报错提到的
TestKafkaDB主题
执行Kafka自带的主题查询命令校验:
Amazon MSK默认关闭自动创建主题的配置,如果查询结果中没有该主题,优先手动创建对应主题,或者修改MSK集群配置/Connect worker配置开启bin/kafka-topics.sh --list --bootstrap-server <你的MSK集群接入地址> --command-config client.propertiesauto.create.topics.enable参数。 - 校验Debezium连接器的主题命名配置
Debezium默认主题命名规则为{topic.prefix}.{数据库名}.{Schema名}.{表名},检查你dbzmmssql.properties中配置的topic.prefix参数、数据库名配置是否存在拼写错误,注意Kafka主题名称大小写敏感,与SQL Server的大小写不敏感规则存在差异,需要严格匹配命名大小写。 - 验证Kafka Connect服务到MSK集群的网络连通性
确认Connect运行的服务器与MSK集群在同一VPC,或已配置正确的VPC对等/公网接入规则,MSK集群安全组已放开对应端口(默认明文端口9092、TLS端口9094、IAM认证端口9098)的入站规则给Connect服务器,可通过以下命令测试连通性:
网络不通的情况下会导致客户端拉取不到主题元数据抛出该报错。nc -zv <MSK单节点接入域名> <端口号> - 检查Connect worker配置的认证、接入地址参数
核对worker.properties中配置的bootstrap.servers是否为正确的MSK集群接入地址,若MSK开启了TLS、SASL/IAM认证,需要同步配置对应的security.protocol、ssl相关参数、认证凭证,认证失败也会触发元数据拉取失败的同类报错。 - 校验主题的分区副本配置有效性
若已手动创建TestKafkaDB主题,执行主题详情查询命令:
确认主题的所有分区都存在正常的Leader节点,若创建主题时设置的副本数超过MSK集群的Broker节点数量,会导致主题创建异常无可用Leader,触发该报错,需要调整副本数重新创建主题。bin/kafka-topics.sh --describe --topic TestKafkaDB --bootstrap-server <你的MSK集群接入地址> --command-config client.properties - 元数据同步延迟适配
若刚创建完主题就启动Connect服务,MSK集群元数据同步存在最多1~2分钟的延迟,等待同步完成后重启Connect服务即可恢复。
内容的提问来源于stack exchange,提问作者Enoch Chu
相关产品推荐
相关产品推荐

