SymmetricDS 中的数据传递

Data Pass Through in SymmetricDS

我感觉有点傻,我搜索答案并没有找到其他人遇到这个问题。

假设我有 NodeHQ、Node1 和 Node2。我已经创建了触发器来在 3 个之间同步 TableA,如下所示:

Node1 <---> NodeHQ <---> Node2

节点 1 和节点 2 具有彼此不同的数据子集。 NodeHQ 具有来自两个节点(两者的子集)的管理信息。 3 个节点中的每一个都在不同的 NODE_GROUP.

现在,使用我设置的触发器和路由器,Inserting/Updating/DeletingNodeHQ 的记录在 Node1 和 Node2 上工作。但是,如果我在 Node1 或 Node2 上进行更改,它只会到达 NodeHQ。它永远不会传递给另一个。

到目前为止我已经尝试过:

我已经上下阅读了用户指南,他们对此相对不明确。 http://www.symmetricds.org/doc/3.6/user-guide/html/advanced.html#bi-direction-sync

现在,所有节点都有 SYNC_ENABLED=1。所有 SYM_TRIGGER 都设置为 SYNC_ON_INCOMING_BATCH=1。我的 SYM_ROUTERs 都设置为 SYNC=1,并且正在使用 ROUTER_TYPE='default'。老实说,我已经尝试了很多其他的小东西,但似乎没有什么能让它把数据传递给下一个 NODE_GROUP。我 运行 没主意了。

他们自己的文档表明 SYNC_ON_INCOMING_BATCH 使触发器能够将数据传递到它到达的每个位置的其他节点。到目前为止,我对此所做的更改没有产生任何结果。还有什么可以尝试的?或者你觉得我应该怎么做?

我正在使用 Firebird 2.52 和 SQL 方言 1。

所以在 运行 SymmetricDS 的 3.7.19 版调试中,我发现在我更改 SYM 表的大多数情况下,触发器没有正确地重新生成。每当我更改规则时,日志都会显示它正在重新制作相关触发器。

解决方案:在每个引擎上 运行 symadmin sync-triggers -f。这会强制重新生成每个触发器,而且似乎已经解决了这个问题。我一定会追查此事,以帮助开发人员防患于未然。