如何让SymmetricDS通过目标引擎的externalId过滤数据加载

How to let SymmetricDS filter data load by externalId of target engine

我正在使用 SymmetricDS 3.7。

我想做的是,如果目标节点的外部 Id 等于 table(多租户)中的列,则让 SymmetricDS 只向客户端引擎发送数据。这意味着,在服务器上我想要所有行,但在客户端只有那些属于客户端的行。

我发现我的 beanshell 脚本中有引擎对象。但似乎这是服务器(发送方)节点而不是客户端引擎实例。

我怎样才能做到这一点?

按照用户指南中的说明使用列匹配路由器:http://www.symmetricds.org/doc/3.7/html/user-guide.html#_router_types

table 中有一列已同步到目标机器,其值与目标机器的 externalId 相匹配

是的。首先你需要在你的 table 列中包含节点 ID(store_id 或 client_id),如果有 2 个 table(master/detail)只添加这个主列中。 在 table sym_router 中创建路由器:

routerid:myatble_header
source_node_group_id:corp
target_node_group_id:store
router_type:subselect
router_expression:c.external_id in (select :store_id)   -> for mysql ( somthing like for other databases)
create_time:now
last_update_time:now

routerid:myatble_detail
source_node_group_id:corp
target_node_group_id:store
router_type:subselect
router_expression:c.external_id in (select store_id from header_table where id=:id)   -> id is primary key and :id is primary of your detail table.
create_time:now
last_update_time:now

现在 sym_trigger_router:

trigger_id: triger_id for your table that defined in sym_trigger table.
router_id:myatble_header (defined in previous step)

trigger_id: triger_id for your detail table that defined in sym_trigger table.
router_id:myatble_detail (defined in previous step)