文档中心>数据传输服务>实践教程>构建多对一同步数据结构

构建多对一同步数据结构

最近更新时间:2024-10-16 17:40:11

我的收藏

操作场景

多对一同步即将多个源端数据库的内容同步到一个目标数据库。用户使用单个数据库由于负载压力大或者受限于地域原因,经常会做数据拆分,使用多个数据库实例来存储同种类型的库表,但是这样给数据查询带来了不便。使用多对一同步功能,可以解决用户的这类问题。
因为多对一同步是通过创建多个单向同步任务来构建多对一拓扑,所以单向同步的约束、操作限制等要求都需要满足,请参考 数据同步 中的对应同步场景。

注意事项

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、阿里云。
接入类型
自建数据库或第三方云厂商数据库,一般可以选择“公网”,也可以选择 “VPN 接入”,“专线接入”或者“云联网”的方式,需要根据实际的网络情况选择。不同接入类型的准备工作请参考 准备工作概述
公网:源数据库可以通过公网 IP 访问。
云主机自建:源数据库部署在 腾讯云服务器 CVM 上。
专线接入:源数据库可以通过 专线接入 方式与腾讯云私有网络打通。
VPN接入:源数据库可以通过 VPN 连接 方式与腾讯云私有网络打通。
云数据库:源数据库属于腾讯云数据库实例。
云联网:源数据库可以通过 云联网 与腾讯云私有网络打通。
目标实例设置
目标实例类型
购买时选择的目标数据库 C 的类型,不可修改。
目标实例地域
购买时选择的目标数据库 C 所在地域,不可修改。
接入类型
本场景选择“云数据库”。
实例 ID
数据库 C 的实例 ID。
账号
数据库 C 的账号,账号权限需要满足要求。
密码
数据库 C 的密码。

5. 在设置同步选项和同步对象页面,将对数据初始化选项、数据同步选项、同步对象选项进行设置,在设置完成后单击保存并下一步
设置项
参数
描述
数据初始化选项
初始化类型
结构初始化:同步任务执行时会先将源实例中表结构初始化到目标实例中。
全量数据初始化:同步任务执行时会先将源实例中数据初始化到目标实例中。
本场景选择结构初始化 + 全量数据初始化。
已存在同名表
前置校验并报错:存在同名表则报错,流程不再继续。
忽略并继续执行:全量数据和增量数据直接追加目标实例的表中。
本场景选择忽略并继续执行。
数据同步选项
冲突处理机制
冲突报错:在同步时发现表主键冲突,报错并暂停数据同步任务。
冲突忽略:在同步时发现表主键冲突,保留目标库主键记录。
冲突覆盖:在同步时发现表主键冲突,用源库主键记录覆盖目标库主键记录。
用户根据实际情况自行选择。
同步操作类型
支持操作:Insert、Update、Delete、DDL。多对一同步最多支持在一个同步任务中选择 DDL。本场景在任务一中选择 DDL,其他任务中不选择。
同步对象选项
源实例库表对象
选择待同步的对象,支持库级别和表及视图级别。
已选对象
展示已选择的同步对象,支持库表映射。

6. 在校验任务页面,系统会先进行 DDL 校验,然后进行源库和目标库参数校验。完成校验并全部校验项通过后,单击启动任务
说明:
如果校验任务不通过,可以参考 校验不通过处理方法 修复问题后重新发起校验任务。
在校验结果中出现告警项不影响启动任务,但推荐单击查看详情获取建议进行调整。
DDL 校验

源库和目标库参数校验

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


创建同步任务二(实例 B > 实例 C)

等到上一个同步任务进行到同步增量阶段后,再配置同步任务二。

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


结束同步任务

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