我觉得有点愚蠢,我搜索答案并没有让其他人遇到这个问题。
想象一下,我有 NodeHQ、Node1 和 Node2。我创建了触发器来在 3 之间同步 TableA,如下所示:
Node1 <---> NodeHQ <---> Node2
Node1 和 Node2 具有彼此不同的数据子集。NodeHQ 具有来自两个节点(两者的子集)的管理信息。3 个节点中的每一个都在不同的 NODE_GROUP 中。
现在,使用我设置的触发器和路由器,在 NodeHQ 插入/更新/删除记录在 Node1 和 Node2 上工作。但是,如果我在 Node1 或 Node2 上进行更改,它只会影响到 NodeHQ。它永远不会传递给另一个。
到目前为止,我已经尝试过:
- 将涉及的触发器的 SYNC_ON_INCOMING_BATCH 设置为 1,没有变化
- 为每个 NODE_GROUP 创建单独的 SYM_TRIGGER,没有变化
- 使用转换无害地更改记录,没有变化
- 删除然后插入所有规则,没有变化
- 使用 Symadmin sync-triggers -f 强制触发重新创建,没有变化
我已经阅读了有关此内容的用户指南,但它们对此相对不具体。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='default'。老实说,我尝试了很多其他的小事情,但似乎没有任何东西可以将数据传递给下一个 NODE_GROUP。我的想法不多了。
他们自己的文档表明 SYNC_ON_INCOMING_BATCH 使得触发器将数据传递到它到达的每个位置的其他节点。到目前为止,我对此的更改没有产生任何结果。还有什么可以尝试的?或者你觉得我应该怎么做?
我正在使用 Firebird 2.52 和 SQL Dialect 1。