Windows本地Kafka Connect JDBC连Postgres成功但无数据入Kafka主题排查
Kafka Connect JDBC 同步Postgres无数据问题排查
按优先级从高到低排查以下配置和逻辑问题:
- 增量模式初始同步逻辑问题
你当前配置的mode=incrementing为纯增量同步模式,连接器首次启动时,会先查询Students表中id列的最大值作为初始同步位点,仅同步连接器启动后新插入、id值大于该初始位点的数据,不会主动同步表内已存在的历史存量数据,这是最常见的触发无数据的原因。验证方式很简单:保持连接器运行,往public.Students表插入1条新数据,等待超过你配置的100ms拉取间隔,查看对应Kafka主题是否有数据写入。如果需要同步存量数据,可以先临时将模式改为mode=bulk跑一次全量同步,再切回增量模式即可。 - 必填转换器配置缺失
你当前仅配置了转换器的schema开关,未指定具体的转换器实现类,该配置缺失时连接器无法完成消息序列化,会出现无报错也无数据写入的情况。在连接器配置中补全以下两项即可:key.converter=org.apache.kafka.connect.json.JsonConverter value.converter=org.apache.kafka.connect.json.JsonConverter - 标识符大小写与权限匹配问题
Postgres对标识符大小写敏感:如果建表时使用双引号强制了Students的驼峰命名,JDBC连接器默认的元数据匹配规则可能识别不到该表;如果连接用的数据库账号没有public.Students表的查询权限、或没有pg_catalog系统表的查询权限,连接器不会抛出显式错误,只会静默跳过无返回。
你可以先用配置里的账号和JDBC连接串直连Postgres,执行以下两句SQL验证权限和对象存在性:
如果SQL执行正常,可以临时去掉配置里的SELECT * FROM public.Students LIMIT 1; SELECT MAX(id) FROM public.Students;table.whitelist和schema.pattern项,重启连接器后观察日志中打印的扫描到的表列表,确认实际表名、schema名和你配置的完全一致。 - 插件兼容性问题
确认放置的kafka-connect-jdbc插件版本和Postgres JDBC驱动版本匹配:Postgres 13及以上版本建议使用42.2.x及以上版本的JDBC驱动,避免因驱动版本过低导致元数据查询、数据拉取静默失败。 - 日志级别调整定位隐性问题
你当前开启的errors.log.enable=true仅会记录数据处理阶段的错误,不会记录表扫描、偏移量查询、任务初始化阶段的问题。可以在Kafka Connect的log4j配置中添加以下配置开启DEBUG日志,重启后即可看到连接器表匹配、SQL查询、结果集拉取的全流程日志,直接定位卡点:log4j.logger.io.confluent.connect.jdbc=DEBUG
内容的提问来源于stack exchange,提问作者abstract33
相关产品推荐
相关产品推荐

