所以我有一个场景。我有一个中央数据库,比如DB0。我还有两个较小的数据库,比如DB1和DB2,它们分别由我的应用程序访问,分别是App1和App2。我想将DB0的内容复制到DB1和DB2。为此,我正在使用Symmetricds。
现在这是我怀疑的地方。据我所知,我可以创建指向DB0的CentralNode-00和分别指向DB1和DB2的2个ClientNode,ClientNodes-01和ClientNodes-02,并轻松进行复制。
但我正试图在嵌入式模式下使用SymmetricDS和我的Java。所以这就是我想要这样做的方式:
从App1开始,我想启动指向DB0的Symmetric-Server Central-00和指向DB1的Symmetric-Client Client-01。与App2类似,我想启动另一个指向DB0的Symmetric-Server Central-00实例和一个指向DB2的Symmetric-Client Client-02。显然,App1和App2将在自己的JVM中启动。
所以我的问题是,我可以在两个不同的VM上启动同一个Symmetric-Server Central-00的两个实例。简单地说,我可以启动两个访问相同数据库的对称服务器节点(也是在此数据库中生成的相同SYM表)。
这是我在中央数据库中插入的配置。
insert into sym_channel
(channel_id, processing_order, max_batch_size, enabled, description)
values('item', 1, 100000, 1, 'Item and pricing data');
insert into sym_node_group (node_group_id) values ('corp');
insert into sym_node_group (node_group_id) values ('store');
insert into sym_node_group (node_group_id) values ('store02');
insert into sym_node_group_link (source_node_group_id, target_node_group_id, data_event_action) values ('corp', 'store', 'W');
insert into sym_node_group_link (source_node_group_id, target_node_group_id, data_event_action) values ('corp', 'store02', 'W');
insert into sym_node_group_link (source_node_group_id, target_node_group_id, data_event_action) values ('store', 'corp', 'P');
insert into sym_node_group_link (source_node_group_id, target_node_group_id, data_event_action) values ('store02', 'corp', 'P');
insert into sym_trigger
(trigger_id,source_table_name,channel_id,last_update_time,create_time)
values('item','item','item',current_timestamp,current_timestamp);
insert into sym_router
(router_id,source_node_group_id,target_node_group_id,router_type,create_time,last_update_time)
values('corp_2_store', 'corp', 'store', 'default',current_timestamp, current_timestamp);
insert into sym_router
(router_id,source_node_group_id,target_node_group_id,router_type,create_time,last_update_time)
values('corp_2_store02', 'corp', 'store02', 'default',current_timestamp, current_timestamp);
insert into sym_trigger_router
(trigger_id,router_id,initial_load_order,last_update_time,create_time)
values('item','corp_2_store', 100, current_timestamp, current_timestamp);
insert into sym_trigger_router
(trigger_id,router_id,initial_load_order,last_update_time,create_time)
values('item','corp_2_store02', 100, current_timestamp, current_timestamp);
但是当我启动实例时,它会抛出Primary Key Violation
异常。
有人可以告诉我这是否可行?如果是这样你能指出我的错误吗?
答案 0 :(得分:0)
没有!只有一个实例,只有一个对称引擎应该指向一个db。为什么不使用多引擎模式并从一个JVM客户端启动所有三个工程师?