问题描述
我正在尝试配置从本地计算机上运行的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
。
解决方法
原来我缺少三个关键部分:
- 在corp-000上手动创建目标数据库表。 Thought SymmetricDS会自动创建一个,但是没有。
- 在corp-000.properties(
auto.reload.reverse=true
)中启用“初始反向加载”。万一我在目标和源节点属性中都启用了它。 - 将(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