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

SymmetricDS配置:基于唯一键而非主键同步冲突数据

基于唯一键配置SymmetricDS同步MySQL数据

场景说明

现有MySQL表结构如下:

id BINARY PRIMARY KEY, -- 实际为GUID
position INT NOT NULL UNIQUE
some_value VARCHAR(200)

两个节点分别创建了position=5的不同条目:

id=0x01
position=5
some_value = "first node entry"

id=0x02
position=5
some_value = "second node entry"

需要通过唯一键position而非主键id进行数据同步,最终保留任意一条条目即可。

配置步骤

1. 指定同步用的唯一键

需要让SymmetricDS知道使用position作为同步匹配的唯一键,而非默认主键,有两种配置方式:

方式一:XML配置(symmetric.xml)

在配置文件的<tables>节点下添加目标表的配置,明确指定syncKeyColumns为position,并配置冲突解决策略:

<table name="your_table_name" catalog="your_db_catalog" schema="your_db_schema">
    <column name="id" type="BINARY"/>
    <column name="position" type="INT"/>
    <column name="some_value" type="VARCHAR"/>
    <!-- 设置同步匹配的唯一键 -->
    <syncKeyColumns>position</syncKeyColumns>
    <!-- 配置冲突解决策略,选任意符合需求的即可 -->
    <conflictResolver>
        <!-- LAST_UPDATE_WINS:保留最后更新的条目;FIRST_UPDATE_WINS:保留先同步的条目;IGNORE:忽略后续冲突条目 -->
        <resolverType>LAST_UPDATE_WINS</resolverType>
    </conflictResolver>
</table>

方式二:数据库元数据表配置

直接操作SymmetricDS的元数据表:

  1. 配置触发器使用唯一键:
UPDATE sym_trigger 
SET sync_on_insert = 1, sync_on_update = 1, sync_on_delete = 1, unique_key_columns = 'position'
WHERE target_table_name = 'your_table_name';
  1. 添加冲突解决策略:
INSERT INTO sym_conflict (conflict_id, target_table_name, detect_type, resolve_type, create_time, last_update_time)
VALUES ('table_position_conflict', 'your_table_name', 'USE_UNIQUE_KEYS', 'LAST_UPDATE_WINS', NOW(), NOW());

resolve_type可选值:LAST_UPDATE_WINS、FIRST_UPDATE_WINS、IGNORE,均满足“保留任意条目”的需求。

2. 生效配置

重启SymmetricDS节点,或者执行命令重载配置:

symadmin reload -n 你的节点ID

这会重新生成同步触发器,确保同步逻辑使用position作为匹配字段。

3. 优化冲突处理(可选)

如果选择LAST_UPDATE_WINS策略,建议给表添加更新时间字段,让冲突判断更精准:

ALTER TABLE your_table_name ADD COLUMN last_update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;

并在同步配置的<column>节点中添加该字段,让SymmetricDS跟踪其变化。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 10:40:25