操作场景
多对一同步即将多个源端数据库的内容同步到一个目标数据库。用户使用单个数据库由于负载压力大或者受限于地域原因,经常会做数据拆分,使用多个数据库实例来存储同种类型的库表,但是这样给数据查询带来了不便。使用多对一同步功能,可以解决用户的这类问题。
注意事项
DTS 在执行全量数据同步时,会占用一定源端实例资源,可能会导致源实例负载上升,增加数据库自身压力。如果您数据库配置过低,建议您在业务低峰期进行。
为了避免数据重复,请确保需要同步的表具有主键或者非空唯一键,对于没有主键或者非空唯一键的表,有数据重复的风险。
用户应提前规划好数据,各个源端负责更新(增、删、改)不同主键的数据,避免主键冲突或者相同主键数据互相覆盖等情况。如果因为业务原因,各源端负责的主键存在交叉,需要参考 推荐配置,选择合理的冲突策略,使同步行为和数据符合预期。
应用限制
多个同步任务配置中 DDL 不能形成环形链路。
DDL 配置原则
多个同步任务配置中 DDL 不能形成环形链路,否则可能造成 DDL 语句在系统中循环,进而引发错误。
目标端同一个库表对象不能接收多个源端的 DDL 同步,否则多个源端的 DDL 可能在目标端形成冲突,进而引发错误。
多张同名表合并为一张表类型的多对一同步中,只能在一个同步任务中选择 DDL。
其他类型的多对一同步(如多张不同名称的表合并到一个库),可以在每个任务中选择 DDL,请用户根据实际情况选择合适的 DDL 同步策略。
在校验阶段,同步系统会结合当前用户的所有其他同步任务,判断正在新建的同步任务是否会造成 DDL 循环或者冲突,并给出提示供用户参考。
典型场景推荐配置
典型场景推荐配置
多对一同步是通过创建多个单向同步任务来构建多对一拓扑,每个单向同步的步骤与普通的单向同步的步骤类似,只是在如下同步选项设置有差异。

如下列出了典型场景的推荐配置,请用户参考操作。
示例:构建实例 A、B 到 C 的同步,且实例 A、B 中有相同名称的表需要同步到实例 C,任务一 A > C 同步,任务二 B > C 同步。如有更多的源端需要同步到目的端,参考任务二增加同步任务即可。
场景 | 时间要求 | 同步任务 | 初始化类型 | 已存在同名表 | 冲突处理机制 | 同步操作类型 |
场景一:实例 A、B 有库表结构和数据,实例 C 为空 | 需要等任务一进行到“同步增量”阶段再启动任务二 | 任务一 | 结构初始化 + 全量数据初始化 | 忽略并继续执行 | 请用户自行选择。 示例:如果某个主键发生冲突,用户需要以 A 的内容为准,则任务一选择冲突覆盖,任务二选择冲突忽略或者冲突报错。 | 多张同名表合一同步的场景中,最多支持在一个任务中选择 DDL。 除 DDL 外,其他操作类型多个任务保持一致。 |
| | | | 任务二 | 全量数据初始化 | 忽略并继续执行 |
| | 场景二:实例 A、B 有库表结构和数据,实例 C 只有库表结构,无数据 | 无 | 任务一 | 全量数据初始化 | 忽略并继续执行 |
| | | | 任务二 | 同任务一 | 同任务一 |
| | 场景三:实例 A、B、C 都有库表结构和数据 | 无 | 任务一 | 全量数据初始化 | 忽略并继续执行 |
| | | | 任务二 | 同任务一 | 同任务一 |
操作步骤
如下以 MySQL 二对一同步(实例 A、B 有库表和数据,实例 C 为空)为例进行介绍,其他数据库的多对一同步操作类似,请参考本指导进行。
创建同步任务一(实例 A > 实例 C)
1. 登录 数据同步购买页,选择相应配置,单击立即购买。
参数 | 描述 |
计费模式 | 支持包年包月和按量计费。 |
源实例类型 | 选择源数据库 A 的类型。 |
源实例地域 | 选择源数据库 A 所在地域。 |
目的实例类型 | 选择目标数据库 C 的类型。 |
目的实例地域 | 选择目标数据库 C 所在地域。 |
同步任务规格 |
2. 购买完成后,返回 数据同步列表,可看到刚创建的数据同步任务,刚创建的同步任务需要进行配置后才可以使用。
3. 在数据同步列表,单击操作列的配置,进入配置同步任务页面。

4. 在配置同步任务页面,配置源端实例、账号密码,配置目标端实例、账号和密码,测试连通性后,单击下一步。
设置项 | 参数 | 描述 |
任务设置 | 任务名称 | DTS 会自动生成一个任务名称,用户可以根据实际情况进行设置。 |
| 运行模式 | 支持立即执行和定时执行两种模式。 |
源实例设置 | 源实例类型 | 购买时所选择的源数据库类型,不可修改。 |
| 源实例地域 | 购买时选择的源数据库所在地域,不可修改。 |
| 服务提供商 | 自建数据库或者腾讯云数据库请选择“普通”;第三方云厂商数据库,请选择对应的商家,AWS、阿里云。 |
| 接入类型 | 公网:源数据库可以通过公网 IP 访问。 云数据库:源数据库属于腾讯云数据库实例。 |
目标实例设置 | 目标实例类型 | 购买时选择的目标数据库 C 的类型,不可修改。 |
| 目标实例地域 | 购买时选择的目标数据库 C 所在地域,不可修改。 |
| 接入类型 | 本场景选择“云数据库”。 |
| 实例 ID | 数据库 C 的实例 ID。 |
| 账号 | 数据库 C 的账号,账号权限需要满足要求。 |
| 密码 | 数据库 C 的密码。 |
5. 在设置同步选项和同步对象页面,将对数据初始化选项、数据同步选项、同步对象选项进行设置,在设置完成后单击保存并下一步。

设置项 | 参数 | 描述 |
数据初始化选项 | 初始化类型 | 结构初始化:同步任务执行时会先将源实例中表结构初始化到目标实例中。 全量数据初始化:同步任务执行时会先将源实例中数据初始化到目标实例中。 本场景选择结构初始化 + 全量数据初始化。 |
| 已存在同名表 | 前置校验并报错:存在同名表则报错,流程不再继续。 忽略并继续执行:全量数据和增量数据直接追加目标实例的表中。 本场景选择忽略并继续执行。 |
数据同步选项 | 主键冲突处理 | 冲突报错:在同步时发现表主键冲突,报错并暂停数据同步任务。 冲突忽略:在同步时发现表主键冲突,保留目标库主键记录。 冲突覆盖:在同步时发现表主键冲突,用源库主键记录覆盖目标库主键记录。 用户根据实际情况自行选择。 |
| 同步操作类型 | 支持操作:Insert、Update、Delete、DDL。多对一同步最多支持在一个同步任务中选择 DDL。本场景在任务一中选择 DDL,其他任务中不选择。 |
同步对象选项 | 同步对象 | 选择整个实例或指定对象。 |
| 高级迁移对象 | 支持同步存储过程(Procedure)、函数(Function)。 |
| 是否同步 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`)同步到目标库。 |
高级选项 | 限制传输速率 |


6. 在配置同步任务时,DTS 支持对单个表或者批量对多个表设置 Where 条件过滤,只有满足设置规则的数据才会同步到目标数据库,这样用户可以灵活进行数据拆分。
6.1 勾选开启 where 条件过滤。
6.2 选择对象。
从前一步骤选择的同步对象范围中,再勾选需要设置 where 条件的对象范围。

6.3 设置过滤条件并确认。
UPDATE 数据条件:可选择更新前、后数据均满足、更新前满足、更新后满足。
条件表达式:输入 where 条件表达式。设置 where 条件后点击检查条件检测输入内容的合法性,然后单击生成过滤规则。

6.4 确认过滤规则,无误后单击保存并下一步。
7. 数据一致性校验,即 DTS 对数据同步的源库和目标库的表数据进行对比,并给出对比结果和不一致详情,辅助用户快速对同步结果进行验证。
在设置一致性校验页面,勾选开启数据一致性校验(默认开启),配置参数后,单击下一步。
配置项 | 参数 | 描述 |
校验选项 | 校验内容 | 全量校验:针对校验任务发起时源和目标库中的全部数据进行比较。 结构校验:针对源和目标库中所有的表结构进行校验,只校验最基本的表结构,不校验表上的索引、约束、注释等。 增量校验:针对校验任务发起时源端产生的增量数据进行数据比较,不校验无主键表。 |
| 校验基准 | 源端:使用源端的数据作为校验基准。 两端:使用源端和目标端作为校验基准。 |
校验参数配置 | 线程数选择 | 设置范围为1~8,请根据实际情况选择,提高线程数可加快一致性校验速度,但也会增加源和目标库的负载。 |
校验对象选项 | 校验对象 | 全部同步对象:校验范围为同步任务勾选的全部对象。 自定义选择:在勾选的同步对象中,选择进行校验的对象。 |
8. 在校验任务页面,完成校验并全部校验项通过后,单击立即启动。
失败:表示校验项检查未通过,任务阻断,需要修复问题后重新执行校验任务。
警告:表示检验项检查不完全符合要求,可以继续任务,但对业务有一定的影响,用户需要根据提示自行评估是忽略警告项还是修复问题再继续。


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

创建同步任务二(实例 B > 实例 C)
等到上一个同步任务进行到同步增量阶段后,再配置同步任务二。

同步任务二和同步任务一操作基本一致,以下仅对差异点进行详细说明。

1. 设置同步源和目标数据库。
源实例设置和目标实例设置中分别填入实例 B 和实例 C 的数据。
2. 设置同步选项和同步对象。
初始化类型:只选择全量数据初始化,不选择结构初始化。
已存在同名表:忽略并继续执行。
冲突处理机制:请用户自行选择。
同步操作类型:不选择 DDL。多对一同步仅支持在一个同步任务选择 DDL。本场景中在任务一中选择 DDL,其他任务中不选择。

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