1

我正在尝试使用对称 ds 3.10.0 为 3 个节点(服务器)创建多主复制。配置所有 3 个节点后,双向复制在第 1 个和第 2 个节点之间完美运行。但是双向复制在(节点 1 和节点 3)/(节点 2 和节点 3)之间不起作用。

节点 1 的节点属性:

engine.name=master-1
group.id=master
external.id=1
db.driver=org.postgresql.Driver
db.url=jdbc:postgresql://192.40.40.1:5441/testdb
db.user=user1
db.password=postgres
registration.url=
sync.url=http://192.40.40.1:31415/sync/master-1
cluster.lock.enabled=false
job.purge.period.time.ms=7200000
job.routing.period.time.ms=5000
job.push.period.time.ms=10000
job.pull.period.time.ms=10000
auto.registration=true
initial.load.create.first=true

节点 2 的节点属性:

engine.name=master-002
group.id=master
external.id=002
db.driver=org.postgresql.Driver
db.url=jdbc:postgresql://192.40.40.2:5441/testdb
db.user=user1
db.password=postgres
registration.url=http://192.40.40.1:31415/sync/master-1
sync.url=http://192.40.40.2:31415/sync/master-002
cluster.lock.enabled=false
job.routing.period.time.ms=5000
job.push.period.time.ms=10000
auto.registration=true
job.pull.period.time.ms=10000

节点 3 的节点属性:

engine.name=master-003
group.id=master
external.id=003
db.driver=org.postgresql.Driver
db.url=jdbc:postgresql://192.40.40.3:5441/testdb
db.user=user1
db.password=postgres
registration.url=http://192.40.40.1:31415/sync/master-1
sync.url=http://192.40.40.3:31415/sync/master-003
cluster.lock.enabled=false
job.routing.period.time.ms=5000
job.push.period.time.ms=10000
job.pull.period.time.ms=10000
auto.registration=true

创建 sym_tables 后,在 node1 执行以下 sql 查询:

INSERT INTO sym_node_group (node_group_id, description, create_time, last_update_by, last_update_time) VALUES ('master', 'The one group in a master to master cluster', NULL, NULL, NULL);
INSERT INTO "public".sym_node_group_link (source_node_group_id, target_node_group_id, data_event_action, sync_config_enabled, is_reversible, create_time, last_update_by, last_update_time) VALUES ('master', 'master', 'P', 1, 0, NULL, NULL, NULL);
INSERT INTO "public".sym_router (router_id, target_catalog_name, target_schema_name, target_table_name, source_node_group_id, target_node_group_id, router_type, router_expression, sync_on_update, sync_on_insert, sync_on_delete, use_source_catalog_schema, create_time, last_update_by, last_update_time, description) VALUES ('master_2_master', NULL, NULL, NULL, 'master', 'master', 'default', NULL, 1, 1, 1, 0, '2022-05-01 11:41:03.738169', 'console', '2022-05-01 11:41:03.738169', NULL);

所有需要的行也被插入到sym_triggersym_trigger_router中。

node3 中的 symmteric.log 文件:

2022-01-06 16:58:45,903 INFO [master-002] [PushService] [master-002-push-default-3] Push data sent to master:003:003
2022-01-06 16:58:45,912 WARN [master-002] [PushService] [master-002-push-default-3] Registration is needed before communicating with master:003:003
2022-01-06 16:58:45,912 INFO [master-002] [PushService] [master-002-push-default-3] Removing identity because registration is required
2022-01-06 16:58:45,950 ERROR [master-002] [DataExtractorService] [master-002-push-default-4] Failed to extract batch 1-4 StackTraceKey.init [NullPointerException:3940683079]
java.lang.NullPointerException
    at org.jumpmind.symmetric.service.impl.DataExtractorService.sendOutgoingBatch(DataExtractorService.java:1414)
    at org.jumpmind.symmetric.service.impl.DataExtractorService.extract(DataExtractorService.java:769)
    at org.jumpmind.symmetric.service.impl.DataExtractorService.extract(DataExtractorService.java:559)
    at org.jumpmind.symmetric.service.impl.PushService.pushToNode(PushService.java:206)
    at org.jumpmind.symmetric.service.impl.PushService.execute(PushService.java:167)
    at org.jumpmind.symmetric.service.impl.NodeCommunicationService$1.run(NodeCommunicationService.java:519)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
2022-01-06 16:58:45,954 INFO [master-002] [PushService] [master-002-push-default-4] Push data sent to master:1:1
2022-01-06 16:58:45,973 INFO [master-002] [PushService] [master-002-push-default-4] Pushed data to node master:1:1. 1 data and 1 batches were processed. (sym_node)
2022-01-06 16:58:45,974 ERROR [master-002] [NodeCommunicationService] [master-002-push-default-4] Failed to execute PUSH for node 1 and channel default StackTraceKey.init [NullPointerException:2481146486]
java.lang.NullPointerException
    at org.jumpmind.symmetric.service.impl.PushService.pushToNode(PushService.java:195)
    at org.jumpmind.symmetric.service.impl.PushService.execute(PushService.java:167)
    at org.jumpmind.symmetric.service.impl.NodeCommunicationService$1.run(NodeCommunicationService.java:519)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
2022-01-06 16:58:54,351 INFO [master-002] [RegistrationService] [master-002-job-6] This node is unregistered.  It will attempt to register using the registration.url
2022-01-06 16:58:54,395 INFO [master-002] [DataLoaderService] [master-002-job-6] Using registration URL of http://192.40.40.1:31415/sync/master-1/registration?nodeGroupId=master&externalId=002&syncURL=http%3A%2F%2F192.40.40.3%3A31415%2Fsync%2Fmaster-002&schemaVersion=%3F&databaseType=PostgreSQL&databaseVersion=9.6&symmetricVersion=3.10.0&deploymentType=server&hostName=MY_PC&ipAddress=192.40.40.3
2022-01-06 16:58:54,505 INFO [master-002] [DataService] [master-002-dataloader-3] Deleted 1 data rows that were on the config channel
2022-01-06 16:58:55,333 INFO [master-002] [ConfigurationChangedDatabaseWriterFilter] [master-002-dataloader-3] Grouplets flushed because new grouplet config came through the data loader
2022-01-06 16:58:55,333 INFO [master-002] [ConfigurationChangedDatabaseWriterFilter] [master-002-dataloader-3] Load filters flushed because new filter config came through the data loader
2022-01-06 16:58:55,333 INFO [master-002] [ConfigurationChangedDatabaseWriterFilter] [master-002-dataloader-3] Channels flushed because new channels came through the data loader
2022-01-06 16:58:55,333 INFO [master-002] [ConfigurationChangedDatabaseWriterFilter] [master-002-dataloader-3] About to refresh the cache of conflict settings because new configuration came through the data loader
2022-01-06 16:58:55,333 INFO [master-002] [ConfigurationChangedDatabaseWriterFilter] [master-002-dataloader-3] About to refresh the cache of parameters because new configuration came through the data loader
2022-01-06 16:58:55,340 INFO [master-002] [ConfigurationChangedDatabaseWriterFilter] [master-002-dataloader-3] About to refresh the cache of node security because new configuration came through the data loader
2022-01-06 16:58:55,341 INFO [master-002] [ConfigurationChangedDatabaseWriterFilter] [master-002-job-6] About to refresh the cache of transformation because new configuration came through the data loader
2022-01-06 16:58:55,341 INFO [master-002] [ConfigurationChangedDatabaseWriterFilter] [master-002-job-6] About to clear the staging area because new transform configuration came through the data loader
2022-01-06 16:58:55,341 INFO [master-002] [StagingManager] [master-002-job-6] Cleaning staging...
2022-01-06 16:58:55,345 INFO [master-002] [StagingManager] [master-002-job-6] Purged 6 staging files, freed 50 KB of disk space.
2022-01-06 16:58:55,345 INFO [master-002] [StagingManager] [master-002-job-6] Finished cleaning staging in 0 seconds.
2022-01-06 16:58:55,345 INFO [master-002] [ConfigurationChangedDatabaseWriterFilter] [master-002-job-6] About to syncTriggers because new configuration came through the data loader
2022-01-06 16:58:55,345 INFO [master-002] [TriggerRouterService] [master-002-job-6] Synchronizing triggers
2022-01-06 16:58:55,913 INFO [master-002] [PushService] [master-002-push-default-6] Push data sent to master:1:1
2022-01-06 16:58:55,918 WARN [master-002] [PushService] [master-002-push-default-6] Registration is needed before communicating with master:1:1
2022-01-06 16:58:55,918 INFO [master-002] [PushService] [master-002-push-default-6] Removing identity because registration is required
2022-01-06 16:58:55,961 ERROR [master-002] [DataExtractorService] [master-002-push-default-5] Failed to extract batch 003-5 StackTraceKey [NullPointerException:3940683079]
2022-01-06 16:58:55,962 INFO [master-002] [PushService] [master-002-push-default-5] Push data sent to master:003:003
2022-01-06 16:58:55,966 WARN [master-002] [PushService] [master-002-push-default-5] Registration is needed before communicating with master:003:003
2022-01-06 16:58:55,966 INFO [master-002] [PushService] [master-002-push-default-5] Removing identity because registration is required
And so on...
......
......
4

0 回答 0