我感觉有点愚蠢,我搜索答案并没有让其他人遇到这个问题。
想象一下,我有NodeHQ,Node1和Node2。我创建了触发器以在3之间同步TableA:
Node1 <---> NodeHQ <---> Node2
Node1和Node2具有彼此不同的数据子集。 NodeHQ具有来自两个节点(两者的子集)的管理信息。 3个节点中的每个节点都在不同的NODE_GROUP中。
目前,通过我设置的触发器和路由器,在NodeHQ上插入/更新/删除记录可在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_ROUTER都设置为SYNC = 1,并使用ROUTER_TYPE =&#39;默认&#39;。说实话,我已经尝试了很多其他的小东西,但似乎没有任何东西可以将数据传递给下一个NODE_GROUP。我的想法已经不多了。
他们自己的文档表明SYNC_ON_INCOMING_BATCH使得触发器将数据传递到它到达的每个地方的其他节点。到目前为止,我对此的改变没有产生任何结果。还有什么可以尝试的?或者您认为我应该怎么做?
我正在使用Firebird 2.52和SQL Dialect 1。
答案 0 :(得分:1)
因此,在调试中运行SymmetricDS的3.7.19版时,我发现在我更改SYM表的大多数情况下,触发器没有正确重新生成。每当我更改规则时,日志表明它正在重建相关的触发器。
解决方案:在每个引擎上运行symadmin sync-triggers -f
。这会强制重新生成每个触发器,并且似乎已经解决了这个问题。我肯定会追踪这一点,以帮助开发人员将其扼杀在萌芽状态。