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

Debezium JDBC连接器配置Upsert模式时的表键处理问题咨询

Debezium JDBC连接器配置Upsert模式时的表键处理问题咨询

各位好,我最近搭建了一套基于Debezium的数据库同步方案:通过Debezium MySQL连接器将源数据库与Kafka集群关联,再用Debezium JDBC连接器把数据写入目标数据库,目前已经成功实现了全库的INSERT模式同步。

但问题来了——每次重置Kafka集群后,都会出现数据重复的情况,所以我想把Sink连接器改成upsert模式来避免这个问题。

不过这里有个棘手的情况:我的数据库表体量都不小,手动给每个表指定主键字段非常不现实,而且还有部分表压根没有定义主键。

下面是我尝试不同primary.key.mode配置时遇到的错误:

  • 当设置primary.key.mode=record.key时:只要连接器同步到没有主键的表,就直接崩溃,原因是该表对应的Kafka Topic中消息的key都是null。
  • 当设置primary.key.mode=kafka时:同步功能勉强能运行,但会在源表中额外生成三个字段,这完全不符合我的需求。
  • 当设置primary.key.mode=record_value时:连接器直接启动失败,还强制要求我定义primary.key.field。我看官方文档的时候没料到会是这个情况,有点困惑。

所以想请教各位:难道Debezium没办法自动处理这种无主键、又不想手动指定主键的场景吗?我是不是只能接受现实,必须手动逐个配置每个表的主键信息?

备注:内容来源于stack exchange,提问作者grizzo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.21 07:54:50