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

Symmetricds单向三层复制配置咨询:离线企业服务器场景指引

配置SymmetricDS单向三层复制指南

首先明确回答你的核心疑问:是的,每台服务器(主库节点、中间转发节点、只读库节点)都需要安装SymmetricDS及依赖的Java环境,因为每个节点都需要运行SymmetricDS实例来处理复制的捕获、转发或接收逻辑。

针对你描述的离线企业环境(主库无互联网)、单向两步式复制(主库→中间节点→Web只读库)场景,下面是详细的配置步骤:

一、前期准备

  1. 离线部署依赖:
    • 提前下载Java JDK(推荐11+版本)的离线安装包,传到所有服务器并完成安装
    • 下载SymmetricDS的离线安装包(对应你数据库版本的包),传到所有服务器解压
    • 下载对应数据库的JDBC驱动jar包,放到各服务器SymmetricDS目录的lib文件夹下
  2. 规划节点拓扑:
    • 定义3个节点组:master-group(企业主库节点)、relay-group(中间转发节点)、read-only-group(Web只读库节点)
    • 为每个节点分配唯一的external.id,比如主库节点为001,中间节点为002,只读节点为003

二、配置主库节点(第一步复制的源节点)

  1. 修改SymmetricDS配置文件conf/symmetric.properties:
    engine.name=master-001
    # 数据库连接配置,替换为你的实际信息
    db.driver=com.mysql.cj.jdbc.Driver
    db.url=jdbc:mysql://localhost:3306/your_main_db?useSSL=false&serverTimezone=UTC
    db.user=db_username
    db.password=db_password
    # 节点组和ID配置
    group.id=master-group
    external.id=001
    # 主节点无需注册,作为注册服务器
    registration.url=
    # 同步服务地址,替换为主库节点的IP
    sync.url=http://192.168.1.100:31415/sync/master-001
    
  2. 初始化SymmetricDS系统表:
    在主库节点的SymmetricDS目录下执行命令:
    ./bin/symadmin create-sym-tables
    
  3. 配置复制规则:
    • 创建触发器(捕获主库变更):插入sym_trigger记录,例如针对orders表:
      INSERT INTO sym_trigger (trigger_id, source_table_name, channel_id, sync_on_insert, sync_on_update, sync_on_delete)
      VALUES ('orders-trigger', 'orders', 'main-channel', 1, 1, 1);
      
    • 创建路由(将变更转发到中间节点组):插入sym_router记录:
      INSERT INTO sym_router (router_id, source_group_id, target_group_id, router_type)
      VALUES ('master-to-relay', 'master-group', 'relay-group', 'default');
      
    • 创建复制通道:插入sym_channel记录:
      INSERT INTO sym_channel (channel_id, processing_order, max_batch_size, enabled)
      VALUES ('main-channel', 1, 1000, 1);
      
  4. 开放中间节点的注册权限:
    执行命令允许中间节点向主节点注册:
    ./bin/symadmin open-registration master-group relay-group 002
    

三、配置中间转发节点(承上启下的节点)

  1. 修改conf/symmetric.properties:
    engine.name=relay-002
    # 中间节点数据库连接配置
    db.driver=com.mysql.cj.jdbc.Driver
    db.url=jdbc:mysql://localhost:3306/your_relay_db?useSSL=false&serverTimezone=UTC
    db.user=db_username
    db.password=db_password
    # 节点组和ID配置
    group.id=relay-group
    external.id=002
    # 向主节点注册的地址
    registration.url=http://192.168.1.100:31415/sync/master-001
    # 自身同步服务地址,替换为中间节点的IP
    sync.url=http://192.168.1.101:31415/sync/relay-002
    
  2. 启动SymmetricDS服务:
    ./bin/sym --start
    
    启动后节点会自动向主节点注册,完成后可以在主节点用./bin/symadmin status查看注册状态。
  3. 配置向只读节点的转发规则:
    • 初始化中间节点的SymmetricDS系统表(如果未自动创建):
      ./bin/symadmin create-sym-tables
      
    • 创建路由(将主库同步过来的变更转发到只读节点组):
      INSERT INTO sym_router (router_id, source_group_id, target_group_id, router_type)
      VALUES ('relay-to-readonly', 'relay-group', 'read-only-group', 'default');
      
    • 确保触发器配置:如果中间节点需要捕获同步过来的表变更(用于转发),可以复用主节点的触发器配置,或者直接同步主节点的sym_trigger记录到中间节点。
  4. 开放只读节点的注册权限:
    ./bin/symadmin open-registration relay-group read-only-group 003
    

四、配置Web只读库节点(最终接收节点)

  1. 修改conf/symmetric.properties:
    engine.name=readonly-003
    # 只读库连接配置,建议使用只读权限的数据库用户
    db.driver=com.mysql.cj.jdbc.Driver
    db.url=jdbc:mysql://localhost:3306/your_readonly_db?useSSL=false&serverTimezone=UTC
    db.user=readonly_username
    db.password=readonly_password
    # 节点组和ID配置
    group.id=read-only-group
    external.id=003
    # 向中间节点注册的地址
    registration.url=http://192.168.1.101:31415/sync/relay-002
    # 自身同步服务地址(只读节点无需对外发送,可保留)
    sync.url=http://192.168.1.102:31415/sync/readonly-003
    
  2. 启动SymmetricDS服务:
    ./bin/sym --start
    
  3. 强化只读限制:
    • 确保数据库用户只有SELECT权限,禁止写入操作
    • 可以在SymmetricDS配置中添加sync.read.only=true,防止节点发起主动变更

五、验证复制流程

  1. 在主库节点的业务表中插入一条测试数据:
    INSERT INTO orders (order_id, customer_name, order_date) VALUES (1001, 'Test User', NOW());
    
  2. 依次检查中间节点、只读节点的对应表是否同步到该数据
  3. 查看各节点的SymmetricDS日志(logs/symmetric.log)排查异常
  4. 使用./bin/symadmin status命令查看节点的同步状态和连接情况

关键注意事项

  • 网络连通性:确保主节点与中间节点、中间节点与只读节点之间能互相访问31415端口(或自定义的同步端口)
  • 离线环境:所有依赖包必须提前离线部署,避免联网下载
  • 单向复制:确保下游节点(中间、只读)没有配置捕获本地变更的触发器,防止反向同步
  • 权限控制:只读节点的数据库用户严格使用只读权限,降低风险

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 10:46:50