tencent cloud

数据传输服务

动态与公告
产品动态
公告
产品简介
产品概述
数据迁移功能描述
数据同步功能描述
数据订阅(Kafka 版)功能描述
产品优势
支持的地域
规格说明
购买指南
计费概述
变更配置说明
欠费说明
退费说明
快速入门
数据迁移操作指导
数据同步操作指导
数据订阅操作指导(Kafka 版)
准备工作
业务评估
网络准备
添加 DTS IP 地址至对接数据库白名单
DTS 服务权限准备
数据库及权限准备
配置自建 MySQL 系的 Binlog
数据迁移
数据迁移支持的数据库
云数据库跨账号实例间迁移
迁移至 MySQL 系列
迁移至 PostgreSQL
迁移至 MongoDB
迁移至 SQL Server
迁移至腾讯云分布式缓存数据库
任务管理
数据同步
数据同步支持的数据库
云数据库跨账号实例间同步
同步至 MySQL 系列
同步至 PostgreSQL
同步至 MongoDB
同步至 Kafka
任务管理
数据订阅(Kafka 版)
数据订阅支持的数据库
MySQL 系列数据订阅
TDSQL PostgreSQL 数据订阅
MongoDB 数据订阅
任务管理
消费管理
前置校验不通过处理方法
检查项汇总
割接说明
监控与告警
支持的监控指标
告警通知功能
通过控制台配置指标告警和事件告警
通过 API 配置指标告警和事件告警
运维管理
配置系统维护时间
任务状态扭转说明
实践教程
本地数据库同步上云
构建双向同步数据结构
构建多对一同步数据结构
构建多活数据中心
数据同步冲突策略如何选择
使用 CLB 代理将其他账号下的数据库迁移至本账号下
通过云联网方式迁移自建数据库至腾讯云数据库
DTS 性能调优最佳实践
常见问题
数据迁移
数据同步
数据订阅 Kafka 版常见问题
数据订阅正则表达式
错误处理
常见错误处理
连通性测试不通过
校验项结果不通过或者出现警告
云联网接入配置源数据时无法选择子网
迁移慢或者进度卡住
数据同步有延时
数据订阅延迟过高
数据消费异常
API 文档
History
Introduction
API Category
Making API Requests
(NewDTS) Data Migration APIs
Data Sync APIs
Data Consistency Check APIs
(NewDTS) Data Subscription APIs
Data Types
Error Codes
DTS API 2018-03-30
相关协议
服务等级协议
文档数据传输服务产品简介数据同步功能描述

数据同步功能描述

PDF
聚焦模式
字号
最后更新时间: 2025-11-06 14:08:30

功能概述

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

实现原理

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


数据冲突处理

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

无锁逻辑说明

MySQL 全量数据复制中,通常会对源库加全局锁(FTWRL)以获取增量数据同步的 Binlog 位点, 但加全局锁可能会影响源库业务,短暂(秒级)阻塞数据写入。
DTS 数据同步中,通过技术升级,实现了无锁同步方式,在全量数据同步时,不需要对源库加全局锁(FTWRL)。这里的有锁、无锁都是针对全量数据同步,即“初始化类型”参数选择了“全量数据初始化”,其他非全量数据同步的场景,不存在有锁、无锁机制。
支持无锁的链路
在 MySQL/MariaDB/Percona/TDSQL-C MySQL/TDSQL MySQL 之间的同步链路中,一般默认使用无锁同步,在全量数据同步阶段,不需要对源库加全局锁(FTWRL),仅对无主键的表加表锁。
特殊有锁场景
主键冲突策略选择“冲突报错”时,需要走有锁同步。
源库为阿里云 RDS 5.5/5.6,PolarDB 5.5/5.6,AWS 的所有 RDS MySQL,Aurora MySQL,这些链路本身默认走无锁,但如果这些链路中主键冲突策略选择了“冲突报错”,会导致在全量数据同步阶段,冲突报错不生效,到增量数据同步阶段,冲突策略才恢复正常。

支持的拓扑结构

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

级联单向同步

一对多单向同步

多对一单向同步

双向同步

级联双向同步


典型应用场景

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

多对一同步
通过 DTS 多对一同步将不同数据库上的数据汇聚到同一个目标库上,方便业务数据整合和聚合分析。

同步到 Kafka
DTS 支持将源库数据投递到 Kafka,方便用户获取源库全量+增量数据,可应用于数据归档、数据分析等场景中。


约束限制

通过对单向同步的组合,从而实现的双向同步,存在以下限制:
数据一致性的保持需要用户业务配合,不要在两个节点上对同一个主键数据进行更新,避免主键冲突或相互覆盖。例如 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 条件过滤
支持对单个表设置自定义过滤条件。
支持同步视图和高级对象
支持同步视图、存储过程、函数。
支持无锁同步
无锁同步指全量数据同步阶段对源库不加全局锁(FTWRL),仅对无主键的表加表锁,其他不加锁。
-
支持任务进度可视化
支持显示同步的步骤和进度数据。
支持指标监控和事件告警
支持对数据同步的各项指标进行监控。
支持对数据同步事件进行监控,事件异常时自动通知用户。
支持实例重启或者升级
同步增量过程中,支持源实例和目标实例重启或者升级。
-
支持 HA 切换
开启 GTID 的前提下,支持源实例 HA 切换。
支持目标实例 HA 切换。
-
支持同步 Online DDL 临时表
使用 gh-ost、pt-osc 工具对源库中的表做 Online DDL,DTS 支持将 Online DDL 变更产生的临时表同步到目标库。
支持修改同步配置
任务运行中,支持增加、删除同步对象,修改 SQL 同步策略等。
支持暂停任务
任务启动后,如果源数据库连接数过多或者业务需要调整,用户可以选择暂停任务,等业务调整完成后继续同步任务。
支持自动重试
同步任务因网络异常等引起的任务临时中断,DTS 将在设置的时间范围内自动重试和恢复任务,不需要用户手动操作。
SSL 安全连接
DTS 与源/目标数据库之间的传输通道支持 SSL 安全连接,对传输通道进行加密。
-
支持 XA 事务
识别源库进行的 XA 事务操作,同步到目标端的数据是按照 XA 事务的逻辑进行解析。 如果源库发生了 XA 事务回滚(rollback),则源库上 rollback 及 rollback 之前的 SQL 语句不会再同步到目标端。
-

帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈