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
相关产品推荐
相关产品推荐

