本地计算机和云实例之间的单向SymmetricDS同步

问题描述

我正在尝试配置从本地计算机上运行的Microsoft sql Server到云中VPS上运行的MariaDB的单向数据流。

本地计算机没有公用的静态IP地址,但是VPS有。

我设法将它们连接起来,但是没有数据传播。

是否支持这样的设置(没有静态公共IP的计算机->具有静态公共IP的计算机)?还是两台机器都需要能够以某种方式相互连接?我想念什么吗?

这是我的配置文件 MariaDB VPS(公司/主服务器/目标): engine / 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

本地计算机上的MS sql(源) engine / sovetskaya-001.properties

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,data_event_action) values ('corp','sovetskaya','W');

insert into sym_router 
(router_id,source_node_group_id,router_type,create_time,last_update_time)
values('sovetskaya_2_corp','default',current_timestamp,current_timestamp);
    
insert into sym_channel (channel_id,processing_order,max_batch_size,enabled,description) values ('main_channel',1,100000,'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);
    
insert into sym_trigger_router (trigger_id,router_id,initial_load_order,'sovetskaya_2_corp',100,current_timestamp);

MS sql Server中的源表称为dbo.item

解决方法

原来我缺少三个关键部分:

  1. 在corp-000上手动创建目标数据库表。 Thought SymmetricDS会自动创建一个,但是没有。
  2. 在corp-000.properties(auto.reload.reverse=true)中启用“初始反向加载”。万一我在目标和源节点属性中都启用了它。
  3. 将(auto.reload.reverse,true)插入sym_parameter表(如下所示)

我的最终属性文件是: MariaDB VPS(公司/主服务器/目标):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

本地计算机(源)上的MS SQL engine / sovetskaya-001.properties

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,data_event_action) values ('corp','sovetskaya','W');

insert into sym_router 
(router_id,source_node_group_id,router_type,create_time,last_update_time)
values('sovetskaya_2_corp','default',current_timestamp,current_timestamp);
    
insert into sym_channel (channel_id,processing_order,max_batch_size,enabled,description) values ('main_channel',1,100000,'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);
    
insert into sym_trigger_router (trigger_id,router_id,initial_load_order,'sovetskaya_2_corp',100,current_timestamp);

INSERT INTO sym_parameter (external_id,node_group_id,param_key,param_value) VALUES ('ALL','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