SymmetricDS删除Lookup Table Router条目后,如何同步删除目标节点数据?
Lookup表条目删除后同步目标节点对应行的实现方案
核心问题本质:默认的Lookup Table Router仅在数据首次路由(插入/更新)时关联行与节点,一旦行已同步到目标节点,删除Lookup表条目不会触发反向删除——因为路由规则仅基于Lookup表当前状态判断是否同步后续操作,不会追溯已完成同步的历史行,同时还会导致路由表的删除操作因映射缺失无法同步到对应节点。
可行解决路径:
触发器+自定义路由扩展
- 给Lookup表添加数据库触发器,捕获删除操作,记录被删除的「列值-节点external_id」映射关系。
- 实现SymmetricDS的
IRouter接口或自定义DataLoaderFilter,读取触发器记录的删除信息,生成匹配目标节点对应路由行的删除指令,通过SymmetricDS分发到目标节点执行。 - 调整同步配置,确保路由表的删除事件能被SymmetricDS捕获,且自定义逻辑能识别需要接收该删除操作的节点。
定时清理+反向同步辅助
- 配置目标节点到源节点的反向同步,辅助追踪已同步到目标节点的路由行状态。
- 在源节点创建定时任务,对比Lookup表当前映射与已路由行记录,筛选出Lookup表中已无映射的行,生成批量删除指令,通过SymmetricDS发送到对应目标节点执行。
替换为动态路由策略
- 将Lookup Table Router替换为Scripted Router(脚本化路由),让每次同步操作(包括删除)都实时查询Lookup表的最新状态。这样Lookup表条目删除后,后续路由表的删除操作会因映射缺失不再被过滤,可正常同步到目标节点;但已同步到目标节点的历史行,仍需额外执行清理步骤。
注意:所有方案都需先在测试环境验证逻辑,避免误删有效数据,生产环境建议配合数据备份执行。
内容的提问来源于stack exchange,提问作者Pat
相关产品推荐
相关产品推荐

