本地机器和云实例之间的单向 SymmetricDS 同步
One-way SymmetricDS sync between local machine and cloud instance
我正在尝试配置从本地计算机上的 Microsoft SQL 服务器 运行 到云中 VPS 上的 MariaDB 运行 的单向数据流.
本地计算机没有 public 静态 IP 地址,但 VPS 有。
我设法连接了它们,但没有数据传播。
是否支持这样的设置(没有静态 Public IP 的机器 -> 有静态 public IP 的机器)?或者两台机器都需要能够以某种方式相互连接?我错过了什么吗?
这是我的配置文件
MariaDB VPS (corp/main server/target):
engines/corp-000.属性
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.属性
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
我的router/node/trigger配置是这样的:
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);
源table在MSSQL服务器中调用dbo.item
.
原来我遗漏了三个关键部分:
- 正在 corp-000 上手动创建目标数据库 table。以为 SymmetricDS 会自动创建一个,但它没有。
- 在 corp-000.properties (
auto.reload.reverse=true
) 中启用“初始反向加载”。以防万一我在目标和源节点属性中都启用了它。
- 正在将 (auto.reload.reverse, true) 插入 sym_parameter table(看下面)
我的最终属性文件是:
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
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
我的 router/node/trigger 配置(运行 在您的数据库控制台中将必要的配置值添加到 sym_* tables 中,SymmetricDS 使用它来同步配置):
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);
然后我 运行 bin/sym 在 corp-000 作为服务器:
bin/sym -e corp-000 -S
并在 sovetskaya 本地 PC 上作为客户端:
bin\sym -e sovetskaya -C
我正在尝试配置从本地计算机上的 Microsoft SQL 服务器 运行 到云中 VPS 上的 MariaDB 运行 的单向数据流.
本地计算机没有 public 静态 IP 地址,但 VPS 有。
我设法连接了它们,但没有数据传播。
是否支持这样的设置(没有静态 Public IP 的机器 -> 有静态 public IP 的机器)?或者两台机器都需要能够以某种方式相互连接?我错过了什么吗?
这是我的配置文件 MariaDB VPS (corp/main server/target): engines/corp-000.属性
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.属性
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
我的router/node/trigger配置是这样的:
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);
源table在MSSQL服务器中调用dbo.item
.
原来我遗漏了三个关键部分:
- 正在 corp-000 上手动创建目标数据库 table。以为 SymmetricDS 会自动创建一个,但它没有。
- 在 corp-000.properties (
auto.reload.reverse=true
) 中启用“初始反向加载”。以防万一我在目标和源节点属性中都启用了它。 - 正在将 (auto.reload.reverse, true) 插入 sym_parameter table(看下面)
我的最终属性文件是: 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
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
我的 router/node/trigger 配置(运行 在您的数据库控制台中将必要的配置值添加到 sym_* tables 中,SymmetricDS 使用它来同步配置):
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);
然后我 运行 bin/sym 在 corp-000 作为服务器:
bin/sym -e corp-000 -S
并在 sovetskaya 本地 PC 上作为客户端:
bin\sym -e sovetskaya -C