独立模式运行MongoDB Debezium连接器报NoClassDefFoundError及Topic不创建问题
Kafka Topic自动创建失败问题排查与解决
- 检查Kafka broker端配置
打开Kafka的
server.properties配置文件,确认auto.create.topics.enable=true,该参数为broker层面的topic自动创建总开关,关闭状态下连接器无法自动创建topic,修改配置后需要重启Kafka生效 - 检查Kafka Connect worker配置
打开connect-standalone.properties配置文件,新增/修改配置topic.creation.enable=true,该参数为Kafka Connect层面的topic自动创建开关,仅在连接器配置中指定分区和副本数不会生效,必须开启worker层面的总开关 - 修正连接器配置格式错误
properties格式的配置文件必须使用等号=作为键值分隔符,将配置中前两行的冒号修改为等号:name=my-mongo-connector connector.class=io.debezium.connector.mongodb.MongoDbConnector mongodb.hosts=rc0/127.0.0.1:27017 mongodb.name=myMongoConnector collection.include.list=dbname.collectionName topic.creation.default.replication.factor=1 topic.creation.default.partitions=2 mongodb.members.auto.discover=false - 校验MongoDB连接与权限配置
- 确认MongoDB副本集名称与配置中
mongodb.hosts前缀的rc0完全一致,副本集名称拼写错误会导致连接器无法正常连接MongoDB捕获变更 - 确认Debezium使用的MongoDB账号拥有
read、readLocal权限,可正常访问副本集的oplog.rs集合 - 确认
collection.include.list参数中的数据库、集合名称与MongoDB中实际的名称完全匹配,该参数对大小写敏感
- 确认MongoDB副本集名称与配置中
- 确认快照执行进度
Debezium默认会先执行全量快照,快照完成后才会开始监听增量变更,查看Kafka Connect运行日志,确认出现Snapshot completed的INFO级日志后再插入测试数据 - 验证topic名称
Debezium默认生成的topic格式为[mongodb.name参数值].[数据库名].[集合名],即你当前配置对应的topic名称为myMongoConnector.dbname.collectionName,可执行以下命令查看所有topic确认是否创建成功:bin/kafka-topics.sh --list --bootstrap-server localhost:9092
内容的提问来源于stack exchange,提问作者akash777.sharma
相关产品推荐
相关产品推荐

