You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker化SymmetricDS双活PostgreSQL环境数据不跨节点复制问题

解决SymmetricDS双活PostgreSQL环境数据不复制的问题

从你的配置来看,节点注册已经完成,但数据未同步的核心原因是缺少同步规则、触发器及双向路由的关键配置,SymmetricDS不会自动同步所有表,必须明确指定同步范围与流转规则。以下是针对性的修复步骤:

1. 配置同步表与变更捕获触发器

首先需要明确指定要同步的表,并创建触发器捕获数据变更:
在任意一个节点的PostgreSQL库中执行以下SQL(配置会自动同步到另一节点):

-- 配置要同步的表(示例为public schema下所有表,可根据业务调整匹配规则)
INSERT INTO sym_table (table_name, node_group_id, sync_on_insert, sync_on_update, sync_on_delete)
VALUES ('public.%', 'primary', 1, 1, 1);

-- 创建PostgreSQL触发器模板
INSERT INTO sym_trigger_template (trigger_template_name, trigger_type, sync_on_insert, sync_on_update, sync_on_delete, handle_old_data, channel_id)
VALUES ('default_postgres', 'postgres', 1, 1, 1, 1, 'default');

-- 为同步表生成触发器
INSERT INTO sym_trigger (trigger_id, table_name, node_group_id, trigger_template_name)
SELECT 'trigger_' || REPLACE(table_name, '.', '_'), table_name, node_group_id, 'default_postgres'
FROM sym_table WHERE node_group_id = 'primary';

2. 配置双活双向同步路由

Active-Active环境需要让两个节点的变更能互相流转,需添加同组内的路由规则:

-- 创建primary组到自身的路由规则(允许同组节点互相同步)
INSERT INTO sym_router (router_id, source_node_group_id, target_node_group_id, router_type, create_time, last_update_time)
VALUES ('primary_to_primary', 'primary', 'primary', 'default', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);

-- 关联触发器与路由规则
INSERT INTO sym_trigger_router (trigger_id, router_id, initial_load_order, create_time, last_update_time)
SELECT trigger_id, 'primary_to_primary', 1, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP
FROM sym_trigger WHERE node_group_id = 'primary';

3. 刷新触发器并激活配置

手动触发SymmetricDS加载新配置:

# 进入SymmetricDS容器
docker exec -it <你的symmetricds容器ID> bash

# 刷新触发器(分别在两个节点执行,替换对应引擎名)
./bin/symadmin --engine symmetricdsmwdb0 reload-triggers
./bin/symadmin --engine symmetricdsmwdb1 reload-triggers

4. 补全双活节点的引擎配置

当前从节点(VM2)缺少双活必备的自动注册与重载配置,修改其引擎配置文件,添加:

auto.registration=true
auto.reload=true

重启SymmetricDS容器生效。

5. 日志排查(若仍未同步)

查看SymmetricDS容器日志定位问题:

docker logs <你的symmetricds容器ID>

重点关注:

  • 触发器创建失败(如数据库权限不足)
  • sym_data表是否有新增的变更记录
  • sym_incoming_batch表是否有接收的同步批次

内容的提问来源于stack exchange,提问作者Yonoss

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 06:45:55