sourcecode

로컬 시스템과 클라우드 인스턴스 간의 단방향 SymmetricDS 동기화

copyscript 2022. 9. 5. 23:12
반응형

로컬 시스템과 클라우드 인스턴스 간의 단방향 SymmetricDS 동기화

로컬 머신에서 실행되는 Microsoft SQL Server에서 VPS에서 실행되는 MariaDB로의 단방향 데이터 흐름을 클라우드에서 구성하려고 합니다.

로컬 시스템에는 공용 정적 IP 주소가 없지만 VPS에는 있습니다.

간신히 연결했는데 데이터가 전파되지 않아요.

이러한 셋업(고정 퍼블릭 IP가 없는 머신 -> 고정 퍼블릭 IP가 있는 머신)은 지원됩니까?아니면 두 기계 모두 어떻게든 서로 연결할 수 있어야 하나요?내가 뭘 빼놓았나요?

다음은 설정 파일 MariaDB VPS(corp/main server/target): engines/corp-000.properties

engine.name=corp-000

db.driver=org.mariadb.jdbc.Driver
db.url=jdbc:mariadb://localhost/LKDSDISP
db.user=<username>
db.password=<passwordhere>

registration.url=
sync.url=http://<ip>:31415/sync/corp-000

group.id=corp
external.id=000

job.purge.period.time.ms=7200000
job.routing.period.time.ms=5000
job.push.period.time.ms=10000
job.pull.period.time.ms=10000

initial.load.create.first=true

로컬 머신(소스) 엔진/sovetskaya-001.properties의 MS SQL

engine.name=sovetskaya-001
db.driver=net.sourceforge.jtds.jdbc.Driver
db.url=jdbc:jtds:sqlserver://localhost:1433/LKDSDISP;useCursors=true;bufferMaxMemory=10240;lobBuffer=5242880

db.user=<username>
db.password=<pwd>

registration.url=http://<mariadb-ip-here>:31415/sync/corp-000

sync.url=http://<local-machine-public-internet-ip-here>:31415/sync/sovetskaya-001
group.id=sovetskaya
external.id=001
job.routing.period.time.ms=5000
job.push.period.time.ms=10000
job.pull.period.time.ms=10000

initial.load.create.first=true

라우터/노드/트리거 설정은 다음과 같습니다.

insert into sym_node_group (node_group_id, description) values ('corp', 'Target MariaDB server');

insert into sym_node_group (node_group_id, description) values ('sovetskaya', 'Sovetskaya MS SQL Server source');

insert into sym_node_group_link (source_node_group_id, target_node_group_id, data_event_action) values ('sovetskaya', 'corp', 'P');
insert into sym_node_group_link (source_node_group_id, target_node_group_id, data_event_action) values ('corp', 'sovetskaya', 'W');

insert into sym_router 
(router_id,source_node_group_id,target_node_group_id,router_type,create_time,last_update_time)
values('sovetskaya_2_corp', 'sovetskaya', 'corp', 'default',current_timestamp, current_timestamp);
    
insert into sym_channel (channel_id, processing_order, max_batch_size, enabled, description) values ('main_channel', 1, 100000, 1, 'channel for replication');
 
insert into sym_trigger (trigger_id,source_table_name,channel_id,last_update_time,create_time) values ('item','item','main_channel',current_timestamp,current_timestamp);
    
insert into sym_trigger_router (trigger_id,router_id,initial_load_order,last_update_time,create_time) values ('item','sovetskaya_2_corp', 100, current_timestamp, current_timestamp);

MS SQL Server의 소스 테이블이 호출됩니다.dbo.item.

알고 보니 세 가지 중요한 부분이 누락되어 있었습니다.

  1. corp-000에 수동으로 타깃 데이터베이스 테이블을 만듭니다.SymmetricDS는 자동으로 생성된다고 생각했지만 생성되지 않았습니다.
  2. corp-000.properties에서 "초기 리버스 로드"를 유효하게 한다(auto.reload.reverse=true). 타겟노드와 소스노드 속성 모두에서 활성화 되어 있는 경우에 대비합니다.
  3. sym_parameter 테이블에 (auto.reload.reverse, true) 삽입(아래 참조)

최종 속성 파일은 MariaDB VPS(corp/main server/target): engines/corp-000.properties입니다.

engine.name=corp-000

db.driver=org.mariadb.jdbc.Driver
db.url=jdbc:mariadb://localhost/LKDSDISP
db.user=<username>
db.password=<passwordhere>

registration.url=
sync.url=http://<ip>:31415/sync/corp-000

group.id=corp
external.id=000

job.purge.period.time.ms=7200000
job.routing.period.time.ms=5000
job.push.period.time.ms=10000
job.pull.period.time.ms=10000

initial.load.create.first=true
auto.reload.reverse=true

로컬 머신(소스) 엔진/sovetskaya-001.properties의 MS SQL

engine.name=sovetskaya-001
db.driver=net.sourceforge.jtds.jdbc.Driver
db.url=jdbc:jtds:sqlserver://localhost:1433/LKDSDISP;useCursors=true;bufferMaxMemory=10240;lobBuffer=5242880

db.user=<username>
db.password=<pwd>

registration.url=http://<mariadb-ip-here>:31415/sync/corp-000

sync.url=http://<local-machine-public-internet-ip-here>:31415/sync/sovetskaya-001
group.id=sovetskaya
external.id=001
job.routing.period.time.ms=5000
job.push.period.time.ms=10000
job.pull.period.time.ms=10000

initial.load.create.first=true
auto.reload.reverse=true

라우터/노드/트리거 설정(데이터베이스 콘솔에서 이를 실행하여 SymmetricDS가 설정 동기화에 사용하는 sym_* 테이블에 필요한 설정 값을 추가합니다)

insert into sym_node_group (node_group_id, description) values ('corp', 'Target MariaDB server');

insert into sym_node_group (node_group_id, description) values ('sovetskaya', 'Sovetskaya MS SQL Server source');

insert into sym_node_group_link (source_node_group_id, target_node_group_id, data_event_action) values ('sovetskaya', 'corp', 'P');
insert into sym_node_group_link (source_node_group_id, target_node_group_id, data_event_action) values ('corp', 'sovetskaya', 'W');

insert into sym_router 
(router_id,source_node_group_id,target_node_group_id,router_type,create_time,last_update_time)
values('sovetskaya_2_corp', 'sovetskaya', 'corp', 'default',current_timestamp, current_timestamp);
    
insert into sym_channel (channel_id, processing_order, max_batch_size, enabled, description) values ('main_channel', 1, 100000, 1, 'channel for replication');
 
insert into sym_trigger (trigger_id,source_table_name,channel_id,last_update_time,create_time) values ('item','item','main_channel',current_timestamp,current_timestamp);
    
insert into sym_trigger_router (trigger_id,router_id,initial_load_order,last_update_time,create_time) values ('item','sovetskaya_2_corp', 100, current_timestamp, current_timestamp);

INSERT INTO sym_parameter (external_id,node_group_id,param_key,param_value) VALUES ('ALL','sovetskaya','auto.reload.reverse','true');

create table item (name varchar(50), count int);

그런 다음 corp-000에서 bin/sym을 서버로 실행합니다.

bin/sym -e corp-000 -S

및 Sovetskaya 로컬 PC에서 클라이언트:

bin\sym -e sovetskaya -C

언급URL : https://stackoverflow.com/questions/64126836/one-way-symmetricds-sync-between-local-machine-and-cloud-instance

반응형