背景
debezium connector 最初仅在创建连接任务时会同步表的存量数据,后续新增的表无法触发存量数据的同步。为了支持新增表的存量数据同步功能,debezium 采用了“信号”的模式通知 connector 进行触发新增表的存量数据同步。
原理
需要在订阅的库中新建一张信令表,并在需要触发新表的存量数据同步时在信令表中插入相关的信息,同时 connector 需要订阅这张信令表,当 connector 收到信令表的消息时,就会触发新增表的存量数据同步功能。
注意事项
1. 由于新增了对信令表(dip_signal_taskId)消息的订阅,因此目标 Topic 中会包含信令表的消息,需要业务端进行相应的过滤处理。
2. 请确保连接管理中配置的用户拥有该数据库的创建、修改、删除表的权限(仅用于对信令表的操作)。
3. 如果使用了信令表同步新增表的存量数据,可能会存在部分增量数据出现重复的情况。如果需要避免重复的数据,可以通过暂停对需要新增的表的增删改查操作之后,再编辑连接器任务的数据源,添加该表,然后再恢复对新增表的增删改查即可,也可以通过下游做一些幂等处理。
4. 如果新建任务时没有选择同步存量数据,然后修改数据源,新增表的时候选择了同步存量数据,且在此期间没有产生任何变更消息,那么 debezium 默认会同时同步旧表和新表的存量数据(与信令表无关)。如果在修改数据源之前旧表有增量变更消息的话,那么修改数据源增加表且选择存量数据时,则只会同步新增表的存量数据(由信令表触发)。
本页内容是否解决了您的问题?