帮你快速理解、总结文档立即下载
文档中心>数据传输服务>实践教程>构建双向同步数据结构

构建双向同步数据结构

最近更新时间:2026-07-24 16:39:00

我的收藏

操作场景

数据传输服务 DTS 支持两个数据库之间的双向数据同步,可应用于异地多活场景。双向同步通过创建两个单向同步任务来构建双向的拓扑,支持在同步过程中,两个数据库实例同时写入数据。
单向同步的约束、操作限制等要求双向同步都需要满足,请参考 数据同步 中的对应同步场景。

注意事项

DTS 在执行全量数据同步时,会占用一定源端实例资源,可能会导致源实例负载上升,增加数据库自身压力。如果您数据库配置过低,建议您在业务低峰期进行。
为了避免数据重复,请确保需要同步的表具有主键或者非空唯一键,对于没有主键或者非空唯一键的表,有数据重复的风险。
用户应提前规划好数据,两个源端负责更新(增、删、改)不同主键的数据,避免主键冲突或者相同主键数据互相覆盖等情况。例如 A 数据库上更新1,3,5的主键数据,B 数据库上更新2,4,6的主键数据。如果因为业务原因,两个源端负责的主键存在交叉,需要参考 推荐配置,选择合理的冲突策略,使同步行为和数据符合预期。
提前准备好目标数据库,并对执行同步任务的账号 授权源库和目标库的对应权限

应用限制

双向同步最多仅支持在一个方向进行 DDL,同步链路不能形成环路(正向同步、反向同步只能选择一个进行 DDL)。
仅 MySQL/TDSQL-C MySQL/MariaDB/Percona/TDSQL MySQL/PostgreSQL 相互之间的同步连接支持双向同步。
源端或者目标端有 MyISAM 引擎的表时,不支持构建双向同步任务,否则会形成数据回环。

典型场景推荐配置

双向同步是通过创建两个单向同步任务来构建双向拓扑,每个单向同步的步骤与普通的单向同步的步骤类似,只是在如下同步选项设置上有差异。

如下列出了典型场景的推荐配置,请用户参考操作。
场景
时间要求
同步任务
初始化类型
已存在同名表
冲突处理机制
同步操作类型
场景一:实例 A 有库表结构和数据,实例 B 为空
需要等任务一进行到“同步增量”阶段再创建任务二
任务一:正向同步 A > B
结构初始化 + 全量数据初始化
前置校验并报错
请用户自行选择。
示例:如果某个主键发生冲突,用户需要以 A 的内容为准,则任务一选择冲突覆盖,任务二选择冲突忽略或者冲突报错。
DDL 最多支持在一个任务中选择。
除 DDL 外,其他操作类型两个任务保持一致。
任务二:反向同步 B > A
不选择
忽略并继续执行
场景二:实例 A 有库表结构和数据,实例 B 只有库表结构,无数据
任务一:正向同步 A > B
全量数据初始化
忽略并继续执行
任务二:反向同步 B > A
不选择
忽略并继续执行
场景三:实例 A、B 都有库表结构和数据
任务一:正向同步 A > B
全量数据初始化
忽略并继续执行
任务二:反向同步 B > A
全量数据初始化
忽略并继续执行

操作步骤

本场景以构建上海地域自建 MySQL A 与北京地域腾讯云 MySQL B 的双向同步为例,A 初始状态有库表结构和数据,B 初始状态为空。发生主键冲突时以 A 的更新为准。A > B 的同步,主键冲突策略为冲突覆盖,同步 DDL + DML;B > A 的同步,主键冲突策略为冲突忽略,仅同步 DML。




创建同步任务一:正向同步 A > B

1. 登录 数据同步购买页,选择相应配置,单击立即购买
参数
描述
创建模式
新建任务:新建一个全新的任务。
创建类似任务:快速创建一个和历史任务相同配置的任务,新的任务中数据库类型、计费模式等默认填充的选项都和历史任务保持一致,用户如果需要也可根据情况进行修改。
计费模式
支持包年包月和按量计费。
源实例类型
选择 MySQL,购买后不可修改。
源实例地域
选择源实例 A 所在地域,购买后不可修改。
目标实例类型
选择 MySQL,购买后不可修改。
目标实例地域
选择目的实例 B 所在地域,购买后不可修改。
规格
请根据业务诉求选择规格,规格越高,性能越好。详情请参考 计费概述
标签
给同步任务设置标签键与标签值,便于通过标签高效管理多个任务。
任务名
选择创建后命名,默认任务名称与任务 ID 一致。在同步任务创建完成之后,可重新设置任务名称。
选择立即命名,在下面输入框,输入任务名称。
协议条款
请务必勾选我已阅读并同意 《云数据库服务条款》
2. 购买完成后,返回 数据同步列表,可看到刚创建的数据同步任务,刚创建的同步任务需要进行配置后才可以使用。
3. 在数据同步列表,单击操作列的配置,进入配置同步任务页面。

4. 设置同步源和目标数据库页面,填写源和目标数据库等信息,然后单击测试连通性,测试连通性后,单击下一步

设置项
参数
描述
任务设置
任务名称
DTS 会自动生成一个任务名称,用户可以根据实际情况进行设置。
运行模式
支持立即执行和定时执行两种模式。
自动重试
设置后,同步任务因网络异常等引起的任务临时中断,DTS 将在设置的时间范围内自动重试和恢复任务,不需要用户手动操作。
支持设置的时间范围为5分钟 - 720分钟。
源实例设置
源实例类型
购买时所选择的数据库 A 的类型,不可修改。
源实例地域
购买时选择的数据库 A 所在地域,不可修改。
服务提供商
选择“普通”。
接入类型
自建数据库一般可以选择公网方式,也可以选择 VPN 接入,专线或者云联网的方式,需要根据实际的网络情况选择。本场景以“公网”为例,不同接入类型的准备工作请参考 准备工作概述
目标实例设置
目标实例类型
购买时选择的目标数据库 B 的类型,不可修改。
目标实例地域
购买时选择的目标数据库 B 所在地域,不可修改。
接入类型
本场景选择“云数据库”。
实例 ID
数据库 B 的实例 ID。
账号
数据库 B 的账号,账号权限需要满足要求。
密码
数据库 B 的密码。
5. 设置同步选项和同步对象页面,将对数据初始化选项、数据同步选项、同步对象选项进行设置,在设置完成后单击保存并下一步



设置项
参数
描述
数据初始化选项
初始化类型
本场景选择结构初始化 + 全量数据初始化。
结构初始化:同步任务执行时会先将源实例中表结构初始化到目标实例中。
全量数据初始化:同步任务执行时会先将源实例中数据初始化到目标实例中。
已存在同名表
本场景选择前置校验并报错。
前置校验并报错:存在同名表则报错,流程不再继续。
忽略并继续执行:全量数据和增量数据直接追加到目标实例的表中。
数据同步选项
冲突处理机制
根据业务情况自行选择,本场景选择冲突覆盖。
冲突报错:在同步时发现表主键冲突,报错并暂停数据同步任务。
冲突忽略:在同步时发现表主键冲突,保留目标库主键记录。
冲突覆盖:在同步时发现表主键冲突,用源库主键记录覆盖目标库主键记录。
同步操作类型
支持操作:Insert、Update、Delete、DDL。打开 “DDL 自定义”,可以根据需要选择不同的 DDL 同步策略。详情请参考 设置 SQL 过滤策略双向同步最多支持在一个同步任务中选择 DDL。本场景在任务一中选择 DDL,在任务二中不选择。
同步对象选项
同步对象
整个实例:同步整个实例。
指定对象:同步指定对象。
高级迁移对象
选择待同步的对象,支持基础库表、视图、存储过程和函数。高级对象的同步是一次性动作,仅支持同步在任务启动前源库中已有的高级对象,在任务启动后,新增的高级对象不会同步到目标库中。更多详情,请参考 同步高级对象
已选对象
支持库表映射(库表重命名),将鼠标悬浮在库名、表名上即显示编辑按钮,单击后可在弹窗中填写新的名称。
选择高级对象进行同步时,建议不要进行库表重命名操作,否则可能会导致高级对象同步失败。
是否同步 Online DDL 临时表
如果使用 gh-ost、pt-osc 工具对源库中的表执行 Online DDL 操作,DTS 支持将 Online DDL 变更产生的临时表同步到目标库。
勾选 gh-ost,DTS 会将 gh-ost 工具产生的临时表名(`_表名_ghc`、`_表名_gho`、`_表名_del`)同步到目标库。
勾选 pt-osc, DTS 会将 pt-osc 工具产生的临时表名(`_表名_new`、 `_表名_old`)同步到目标库。
更多详情请参考 同步 Online DDL 临时表
高级选项
限制传输速率
一般情况下任务配置这里不需要勾选,仅在数据库的配置较低,无法负载 DTS 默认并发线程数和 RPS 时,需要配置。详情请参考 限速
6. 在 A > B 的正向同步任务中,DTS 会进行源库和目标库参数校验。完成校验并全部校验项通过后,单击启动任务。在 B > A 的反向同步任务中,DTS 还会增加 DDL 校验。
说明:
如果校验任务不通过,可以参考 校验不通过处理方法 修复问题后重新发起校验任务。
在校验结果中出现告警项不影响启动任务,但推荐单击查看详情获取建议进行调整。
DDL 校验


说明:
如果环形链路未形成 DDL 冲突,则不会出现上述校验失败问题。
源库和目标库参数校验

7. 返回数据同步任务列表,任务开始进入运行中状态。



创建同步任务二:反向同步 B > A

正向同步和反向同步操作基本一致,以下仅对差异点进行详细说明。
1. 确定任务一的状态,在任务一进行到“同步增量”阶段,再开始配置任务二。 这个时间要求,仅对 B 数据为空的场景,其他场景不需要等待。



2. 设置同步源和目标数据库。 本步骤中的源和目标数据需要与任务一中的数据进行互换。



3. 设置同步选项和同步对象。
初始化类型:不选择。
已存在同名表:忽略并继续执行。
主键冲突处理机制:根据业务情况自行选择,本场景选择冲突忽略。
同步操作类型:双向同步仅支持在一个同步任务中选择 DDL。本场景在任务一中选择 DDL,在任务二中不选择。

4. 在校验任务页面,进行 DDL 校验。



结束同步任务

如不需要同步任务,可选择操作列的更多 > 结束,关闭同步任务。