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

Debezium实现MySQL到Kafka CDC时遇NoSuchMethodError错误求助

解决Debezium CDC到JDBC Sink的NoSuchMethodError增量同步问题

问题根源

这个错误java.lang.NoSuchMethodError: org.apache.kafka.connect.runtime.InternalSinkRecord.originalRecord()是版本兼容性不匹配导致的:

  • InternalSinkRecord.originalRecord()方法是Kafka Connect 2.6.0版本才新增的API
  • 如果你使用的JDBC Sink Connector版本≥1.8.0,它会依赖这个方法,但你的Kafka Connect运行时版本低于2.6.0,就会出现找不到方法的报错
  • 全量快照正常是因为该阶段未触发JDBC Sink中调用originalRecord()的逻辑,而增量同步阶段的记录处理会触发这个调用,导致失败

解决方案

1. 检查版本匹配关系

先确认两个关键组件的版本:

  • 查看Kafka Connect运行时版本:
    ./bin/kafka-connect-version.sh
    
  • 查看已安装的JDBC Sink Connector版本:
    curl -X GET http://<connect-host>:<port>/connector-plugins | grep -i jdbc
    

2. 调整版本适配

根据检查结果二选一操作:

若Kafka Connect版本 < 2.6.0

卸载现有高版本JDBC Sink,降级到1.7.0或更早版本(这些版本不依赖originalRecord()方法):

# 删除插件目录下的JDBC Sink相关jar包
rm -rf <connect-plugin-dir>/kafka-connect-jdbc-*.jar
# 下载1.7.0版本jar包
curl -O https://packages.confluent.io/maven/io/confluent/kafka-connect-jdbc/1.7.0/kafka-connect-jdbc-1.7.0.jar
# 将jar包放入Connect插件目录,重启Connect服务

若Kafka Connect版本 ≥ 2.6.0

确保JDBC Sink Connector版本≥1.8.0,若当前版本过低则升级到兼容版本(建议和Confluent Platform或Kafka版本匹配的官方推荐版本):

# 删除旧版本jar包
rm -rf <connect-plugin-dir>/kafka-connect-jdbc-*.jar
# 下载对应兼容版本(以2.0.0为例)
curl -O https://packages.confluent.io/maven/io/confluent/kafka-connect-jdbc/2.0.0/kafka-connect-jdbc-2.0.0.jar
# 将jar包放入插件目录,重启Connect服务

3. 验证修复效果

  • 重启Kafka Connect服务后,重新启动Debezium CDC和JDBC Sink任务
  • 在源MySQL中触发增量变更(插入/更新一条数据),检查Sink任务日志是否不再抛出NoSuchMethodError,目标库是否成功同步增量数据

额外注意事项

  • Debezium Connector版本也需和Kafka Connect版本兼容,建议遵循官方版本矩阵(比如Debezium 1.9.x对应Kafka 2.8.x,Debezium 2.0.x对应Kafka 3.0.x)
  • 若使用Confluent Platform,优先保持所有组件版本统一,避免跨版本兼容问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 17:54:59