tencent cloud

文档反馈

数据同步功能描述

最后更新时间:2023-03-03 14:41:52

    功能概述

    数据同步功能指两个数据源之间的数据实时同步,可应用于云上云下多活、异地多活、跨境数据同步,及实时数据仓库等业务场景。
    数据同步不同于数据迁移,数据迁移是以整体数据库搬迁为目的,它属于一次性的短期任务,迁移完成后用户一般需要进行手动割接操作,将业务对接到新的数据库上,而数据同步属于持续性任务,任务创建后会一直同步数据(几乎实时同步),保持源库和目标库的数据一致性。
    腾讯云 DTS 支持将自建数据库、云数据库、第三方云厂商数据库等同步到腾讯云数据库。
    云上云下同步:如将本地 IDC 自建数据库同步到腾讯云数据库实例,并且支持建立反向同步,实现云上云下双向同步。
    多云厂商间同步:将第三方云厂商数据库同步到腾讯云数据库实例,实现双云同步。
    腾讯云数据库实例间同步:如异地多活,跨境数据库同步,不同腾讯云账号下的数据库实例同步等。

    实现原理

    如下以 MySQL 同步为例进行介绍。整体流程为,数据从源实例中导出并导入到目标实例中,关键步骤包括结构初始化、全量数据初始化及增量数据处理。
    结构初始化 结构初始化即在目标实例中创建与源实例相同的库表结构信息。同步任务配置时,用户可以选择是否同步库表结构,如果目标实例中已经创建了与源实例相同的结构信息,则不需要同步库表结构信息,只需要同步数据即可,否则需要同步库表结构信息。
    全量数据初始化 结构初始化完成后,DTS 会进行存量数据初始化,即将源实例中的全部存量数据导出并导入到目标实例中。
    增量数据处理 增量数据处理通过源实例 Binlog 持续获取增量数据,进行一系列过滤转换操作后,将增量数据持久化到中间存储。在全量数据导入完成后,开始在目标实例上持续回放中间存储上的增量变更数据,从而实现目标实例与源实例数据保持一致。
    
    

    数据冲突处理

    DTS 同步任务中,源库和目标库的数据可能存在冲突,DTS 支持进行同名表冲突和主键冲突检测。
    同名表冲突
    目标库与源库存在同名表时,支持选择任务报错提醒用户(前置校验并报错),或者将源库的数据追加到目标库的同名表中(忽略并继续执行)。
    主键冲突
    DTS 支持对主键冲突进行检测,并提供如下冲突处理机制。具体的实现示例请参考 数据同步冲突策略如何选择
    冲突报错:同步任务中,源库插入(INSERT)主键数据与目标库存在冲突时,任务报错并暂停,需要用户手动处理后才能继续。
    冲突忽略:同步任务中检测到源库的主键插入(INSERT)数据与目标库发生冲突时,忽略源库的主键插入数据,以目标库的内容为准。
    冲突覆盖:同步任务中检测到源库的主键更新(INSERT 和 UPDATE)数据与目标库发生冲突时,用源库的主键数据覆盖目标的主键数据。

    支持的拓扑结构

    同步服务的基本单元为单向同步,配置时可以选择对 DDL(Data Definition Language)、DML(Data Manipulation Language)进行同步。通过对单向同步进行组合,可以定制各种复杂的拓扑。 在复杂拓扑中,对于 DML 操作,我们会通过技术手段来避免数据循环的发生。而对于 DDL,数据同步服务会在配置时进行循环检测,避免形成 DDL 循环。
    以下为一些常见拓扑,用户均可通过购买多个同步实例进行定制。详细的构建复杂拓扑结构的指导请参考 构建双向同步数据结构构建多对一同步数据结构构建多活数据中心
    一对一单向同步
    
    
    级联单向同步
    
    
    一对多单向同步
    
    
    多对一单向同步
    
    
    双向同步
    
    
    
    级联双向同步
    
    
    

    典型应用场景

    通过腾讯云数据同步服务在多地域间的 MySQL 数据库实例间建立数据同步,可实现异地多活。其中各个地域的数据库实例可以运行在云上,也可以运行在企业自建数据中心。
    
    

    约束限制

    通过对单向同步的组合,从而实现的双向同步,存在以下限制:
    数据一致性的保持需要用户业务配合,不要在两个节点上对同一个主键数据进行更新,避免主键冲突或相互覆盖。例如 A 节点更新1,3,5的主键数据,B 节点更新2,4,6的主键数据。
    如果发生数据同步冲突,DTS 会严格按照用户选择的冲突策略对数据进行处理,请在配置时确认对应的冲突处理符合业务预期。
    DML 语句支持双向同步,DDL 语句只支持单向同步。构建双向同步,请确保其中一个单向实例禁止 DDL 同步。

    支持的数据库类型

    数据同步支持的源库类型、目标库类型、版本、同步类型详情请参见 数据同步支持的数据库

    支持的高级功能

    支持功能
    功能描述
    相关文档
    支持双向同步、环形同步、多对一同步
    支持复杂的同步拓扑结构,双向同步、环形同步、多对一同步等。
    支持跨账号同步
    支持不同腾讯云账号下的实例间数据同步。
    支持大部分数据库的跨版本同步
    目标库版本大于等于源库即可,如5.5.x版本支持同步到5.5.x、5.6.x及更高版本,最后一位属于小版本,小版本不限制。
    -
    支持库表冲突检查
    提供库表重名冲突检查策略。
    -
    支持主键冲突检查
    支持如下三种主键冲突处理策略:
    冲突报错:在同步时发现表主键冲突,报错并暂停数据同步任务。
    冲突忽略:在同步时发现表主键冲突,保留目标库主键记录。
    冲突覆盖:在同步时发现表主键冲突,用源库主键记录覆盖目标库主键记录。
    支持过滤 DML 和 DDL
    支持选择同步数据类型,包括 Insert、Update、Delete。
    支持选择具体的 DDL 操作,如 CREATE TABLE、CREATE VIEW、 DROP INDEX 等。
    支持 Where 条件过滤
    支持对单个表设置自定义过滤条件。
    支持同步视图和高级对象
    支持同步视图、存储过程、函数。
    -
    支持任务进度可视化
    支持显示同步的步骤和进度数据。
    -
    支持指标监控和默认告警策略
    支持对数据同步的各项指标进行监控。
    支持对数据同步事件的监控进行默认配置,事件异常时自动通知用户。
    支持实例重启或者升级
    同步增量过程中,支持源实例和目标实例重启或者升级。
    -
    支持 HA 切换
    开启 GTID 的前提下,支持源实例 HA 切换。
    支持目标实例 HA 切换。
    -
    
    联系我们

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

    技术支持

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

    7x24 电话支持