3

我觉得有点愚蠢,我搜索答案并没有让其他人遇到这个问题。

想象一下,我有 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。

4

1 回答 1

1

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

解决方案:symadmin sync-triggers -f在每个引擎上运行。这会强制重新生成每个触发器,并且似乎已经解决了这个问题。我一定会追查到这一点,以帮助开发人员将其扼杀在萌芽状态。

于 2016-01-06T18:07:24.857 回答