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



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

本地机器没有公共静态IP地址,但VPS有。

我设法连接了它们,但没有传播任何数据。

是否支持这样的设置(不具有静态公共IP的计算机->具有静态公共IP的计算机(?或者两台机器都需要能够以某种方式相互连接?我是不是错过了什么?

这是我的配置文件MariaDB VPS(公司/主服务器/目标(:发动机/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(源(engines/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, 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上创建目标数据库表。Think SymmetricDS会自动创建一个,但它没有
  2. 启用";初始反向负载";在corp-000.properties(auto.reload.reverse=true(中。以防万一,我在目标节点和源节点属性中都启用了它
  3. 将(auto.reload.reverse,true(插入到sym_parameter表中(如下所示(

我的最终属性文件是:MariaDB VPS(corp/主服务器/目标(: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(源(engines/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, 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上作为客户端:

binsym -e sovetskaya -C

最新更新