SymmetricDS DDL复制异常:新增字段插入数据无法同步
SymmetricDS新增字段数据同步异常排查
问题场景
使用SymmetricDS完成表结构(DDL)复制,执行了以下命令:bin\symadmin.bat -e rada-000 --node=001 sync-triggersbin\symadmin.bat -e rada-000 --node=001 send-schema TABLE
DDL复制完成后,目标数据库表的新增字段显示正常,但向该表插入数据时,新增字段的内容无法同步至目标节点,其余字段数据同步无异常。
已验证项
- 两个节点的表结构已完全同步
- 触发器对原有字段的同步工作正常
核心问题
- 哪些原因可能导致新增字段的数据无法同步?
- DDL复制后是否需要执行额外步骤以确保新增字段数据正常同步?
环境信息
- SymmetricDS版本:3.15.7
- 操作系统:根节点Windows 10,目标节点Ubuntu 22.04
- 数据库:Firebird 3.10
可能原因及解决方案
一、触发器未包含新增字段
执行sync-triggers命令时,可能因配置或扫描逻辑问题,未为新增字段更新触发器逻辑。SymmetricDS的同步触发器需要明确包含所有需同步的字段,新增字段若未被触发器捕获,就不会生成对应的同步事件。
二、同步元数据表未更新
SymmetricDS依赖sym_table和sym_column元数据表记录需同步的表与字段信息。DDL同步后,这些元数据可能未自动更新,导致新增字段未被纳入同步范围。
三、表结构同步未触发元数据刷新
send-schema仅完成了数据库表结构的同步,但未触发SymmetricDS内部元数据的刷新,系统未识别到新增字段需要同步。
必要的额外步骤
- 重新生成并同步触发器
先清理根节点原有触发器,再重新生成后同步到目标节点:
bin\symadmin.bat -e rada-000 --node=000 drop-triggers bin\symadmin.bat -e rada-000 --node=000 create-triggers bin\symadmin.bat -e rada-000 --node=001 sync-triggers
- 刷新节点元数据
手动触发节点重新加载元数据,确保新增字段被纳入同步配置:
bin\symadmin.bat -e rada-000 reload-node --node=000 bin\symadmin.bat -e rada-000 reload-node --node=001
验证元数据配置
查询数据库的sym_column表,确认新增字段已存在于对应表的记录中,且sync_on_insert、sync_on_update等属性设置为1(开启同步状态)。重启SymmetricDS服务
若上述步骤无效,重启根节点和目标节点的SymmetricDS服务,确保所有配置变更生效。
内容的提问来源于stack exchange,提问作者Lucas Ramos
相关产品推荐
相关产品推荐

