2017-12-09 13 views
1

그래서 여기 시나리오가 있습니다. 나는 DB0라고하는 중앙 데이터베이스를 가지고있다. DB1과 DB2에 내 응용 프로그램에서 액세스하는 두 개의 작은 데이터베이스가 있다고 가정하면 App1과 App2가 각각 있습니다. DB0과 DB2에 DB0의 내용을 복제하고 싶습니다. 이것을 위해 저는 Symmetricds를 사용하고 있습니다.대칭 : 동일한 DB를 참조하는 2 개의 서버 노드 생성

이제 내가 의심 스럽습니다. DBN과 2 ClientNodes, ClientNodes-01, ClientNodes-02를 가리키는 CentralNode-00을 DB1과 DB2를 각각 가리키며 쉽게 만들 수 있음을 이해합니다.

하지만 Java에서 임베디드 모드로 SymmetricDS를 사용하려고합니다. 그래서 이것을 어떻게하고 싶습니다 :

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 인스턴스 두 개를 시작할 수 있습니까? 간단히 말해, 동일한 DB (이 DB 내에서 생성 된 동일한 SYM 테이블)에 액세스하는 두 개의 대칭 서버 노드를 시작할 수 있습니까?

이것은 중앙 DB에 삽입 한 구성입니다.

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

아니요! 하나의 인스턴스 만, 하나의 대칭 엔진이 하나의 db를 가리켜 야합니다. 다중 엔진 모드를 사용하고 하나의 JVM 클라이언트에서 세 엔지니어를 모두 시작하는 이유는 무엇입니까?