tencent cloud

文档反馈

构建多对一同步数据结构

最后更新时间:2024-07-08 15:51:28

    操作场景

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

    注意事项

    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. 登录 数据同步购买页,选择相应配置,单击立即购买
    2. 购买完成后,返回 数据同步列表,可看到刚创建的数据同步任务,刚创建的同步任务需要进行配置后才可以使用。
    3. 在数据同步列表,单击操作列的配置,进入配置同步任务页面。
    4. 在配置同步任务页面,配置源端实例、账号密码,配置目标端实例、账号和密码,测试连通性后,单击下一步
    设置项
    参数
    描述
    任务设置
    任务名称
    DTS 会自动生成一个任务名称,用户可以根据实际情况进行设置。
    运行模式
    支持立即执行和定时执行两种模式。
    源实例设置
    源实例类型
    购买时所选择的云数据库实例类型,不可修改。
    源实例地域
    购买时选择的云数据库实例 A 所在地域,不可修改。
    服务提供商
    支持普通(包括腾讯云 MySQL 数据库及自建 MySQL 数据库)、AWS、阿里云。
    接入类型
    若服务提供商选择其他云厂商,接入类型可选公网;如服务提供商选择普通,请根据数据库部署情况选择。
    公网:通过公网 IP 接入的自建数据库。
    云主机自建:腾讯云服务器 CVM 上的自建数据库。
    专线/VPN 接入:通过专线/VPN 网关接入的自建数据库。
    私有网络 VPC:通过私有网络 VPC 接入的自建数据库。
    云数据库:腾讯云数据库。
    云联网:通过云联网接入的自建数据库。
    目标实例设置
    目标实例类型
    所选择的目标实例类型,不可修改。
    目标实例地域
    选择的目标实例 C 所在地域,不可修改。
    接入类型
    选择目标数据库 C 接入类型。
    5. 在设置同步选项和同步对象页面,将对数据初始化选项、数据同步选项、同步对象选项进行设置,在设置完成后单击保存并下一步
    设置项
    参数
    描述
    数据初始化选项
    初始化类型
    结构初始化:同步任务执行时会先将源实例中表结构初始化到目标实例中。
    全量数据初始化:同步任务执行时会先将源实例中数据初始化到目标实例中。
    本场景选择结构初始化+全量数据初始化。
    已存在同名表
    前置校验并报错:存在同名表则报错,流程不再继续。
    忽略并继续执行:全量数据和增量数据直接追加目标实例的表中。
    本场景选择忽略并继续执行。
    数据同步选项
    冲突处理机制
    冲突报错:在同步时发现表主键冲突,报错并暂停数据同步任务。
    冲突忽略:在同步时发现表主键冲突,保留目标库主键记录。
    冲突覆盖:在同步时发现表主键冲突,用源库主键记录覆盖目标库主键记录。
    用户根据实际情况自行选择。
    同步操作类型
    支持操作:Insert、Update、Delete、DDL。
    多对一同步最多支持在一个同步任务中选择 DDL。本场景在任务一中选择 DDL,其他任务中不选择。
    同步对象选项
    源实例库表对象
    选择待同步的对象,支持库级别和表及视图级别。
    已选对象
    展示已选择的同步对象,支持库表映射。
    6. 在校验任务页面,系统会先进行 DDL 校验,然后进行源库和目标库参数校验。完成校验并全部校验项通过后,单击启动任务
    说明:
    如果校验任务不通过,可以参考 校验不通过处理方法 修复问题后重新发起校验任务。
    在校验结果中出现告警项不影响启动任务,但推荐单击查看详情获取建议进行调整。
    DDL 校验
    源库和目标库参数校验
    7. 返回数据同步任务列表,任务开始进入运行中状态。

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

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

    结束同步任务

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

    联系我们,为您的业务提供专属服务。

    技术支持

    如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

    7x24 电话支持