You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kafka Connect JDBC Source拉取MySQL表返回0条记录排查求助

排查解决步骤

1. 基础连通性&权限验证

  • 登录Kafka Connect运行节点,使用配置里的相同账号密码手动连接MySQL,执行 SELECT * FROM DATABASE.news LIMIT 10;,确认以下几点:
    • 网络连通、账号密码正确
    • 该账号拥有news表的SELECT权限
    • 库名、表名大小写匹配(MySQL Linux实例默认表名大小写敏感)
  • 确认MySQL JDBC驱动(mysql-connector-java.jar)已经放到Kafka Connect的插件或类加载路径下,缺失驱动会出现无报错但查询无返回的异常。

2. 修正JDBC连接URL参数

这是MySQL大表同步的高频问题:MySQL JDBC驱动默认会将全量结果集一次性加载到内存,6500万条数据的加载过程会远超连接器的默认超时时间,导致还没返回记录就触发了空提交。在connection.url末尾追加以下参数:

jdbc:mysql://MY-SERVER/DATABASE?useCursorFetch=true&useServerPrepStmts=true&fetchSize=10000&useSSL=false&serverTimezone=Asia/Shanghai

参数说明:

  • useCursorFetch=true 开启MySQL服务端游标,避免全量结果集加载到内存
  • fetchSize=10000 指定每次从MySQL拉取的行数,可根据服务器性能调整
  • serverTimezone 时区参数,避免时区不匹配导致的异常数据过滤
  • useSSL=false 未开启SSL的实例必须关闭,避免连接异常

3. 补充连接器超时&批量配置

在现有配置中追加以下参数,适配大表同步的超时要求:

"batch.max.rows": "10000",
"poll.interval.ms": "60000",
"query.timeout.ms": "300000"
  • query.timeout.ms 调大查询超时时间到5分钟,避免大表查询还未返回就被中断
  • batch.max.rows 指定每批次写入Kafka的记录数,和fetchSize对齐即可

4. 确认Topic名称&偏移量问题

  • 你配置的topic.prefix为news_,最终生成的Topic名称是news_news,不要误找newsTopic,可使用Kafka自带的控制台消费者消费确认:
    kafka-console-consumer.sh --bootstrap-server 你的kafka地址:9092 --topic news_news --from-beginning
    
  • 如果之前创建过同名连接器,已经提交了空偏移量,可删除旧连接器后换个名称重新创建,避免偏移量残留影响同步。

5. 排查隐藏异常

将Kafka Connect的日志级别调整为DEBUG,查看io.confluent.connect.jdbc包的日志,确认是否存在类型转换异常、序列化异常:比如news表包含JSON、BIT、超大TEXT等特殊字段,没有配置对应转换器会导致记录被静默丢弃。

内容的提问来源于stack exchange,提问作者user3640028

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.18 04:54:03