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
聚焦模式
字号
最后更新时间: 2024-07-08 15:51:28

操作场景

数据传输服务 DTS 支持两个数据库之间的双向数据同步,可应用于异地多活场景。双向同步通过创建两个单向同步任务来构建双向的拓扑,支持在同步过程中,两个数据库实例同时写入数据。
单向同步的约束、操作限制等要求双向同步都需要满足,请参考 数据同步 中的对应同步场景。

注意事项

DTS 在执行全量数据同步时,会占用一定源端实例资源,可能会导致源实例负载上升,增加数据库自身压力。如果您数据库配置过低,建议您在业务低峰期进行。
为了避免数据重复,请确保需要同步的表具有主键或者非空唯一键,对于没有主键或者非空唯一键的表,有数据重复的风险。
用户应提前规划好数据,两个源端负责更新(增、删、改)不同主键的数据,避免主键冲突或者相同主键数据互相覆盖等情况。例如 A 数据库上更新1,3,5的主键数据,B 数据库上更新2,4,6的主键数据。如果因为业务原因,两个源端负责的主键存在交叉,需要参考 推荐配置,选择合理的冲突策略,使同步行为和数据符合预期。
提前准备好目标数据库,并对执行同步任务的账号 授权源库和目标库的对应权限

应用限制

双向同步最多仅支持在一个方向进行 DDL,同步链路不能形成环路(正向同步、反向同步只能选择一个进行 DDL)。
MySQL/TDSQL-C MySQL/MariaDB/Percona/TDSQL MySQL 之间的同步链接都支持双向同步,仅 TDSQL MySQL(MariaDB 内核)作为源或者目标库时,不支持双向同步。

典型场景推荐配置

双向同步是通过创建两个单向同步任务来构建双向拓扑,每个单向同步的步骤与普通的单向同步的步骤类似,只是在如下同步选项设置有差异。

同步选项设置差异

如下列出了典型场景的推荐配置,请用户参考操作。
场景
时间要求
同步任务
初始化类型
已存在同名表
冲突处理机制
同步操作类型
场景一:实例 A 有库表结构和数据,实例 B 为空
需要等任务一进行到“同步增量”阶段再创建任务二
任务一:正向同步 A > B
结构初始化 + 全量数据初始化
前置校验并报错
请用户自行选择。
示例:如果某个主键发生冲突,用户需要以 A 的内容为准,则任务一选择冲突覆盖,任务二选择冲突忽略或者冲突报错。
冲突策略的生效对象仅对当前发生主键冲突时的主键数据。
DDL 最多支持在一个任务中选择。
除 DDL 外,其他操作类型两个任务保持一致。
任务二:反向同步 B > A
不选择
忽略并继续执行
场景二:实例 A 有库表结构和数据,实例 B 只有库表结构,无数据
任务一:正向同步 A > B
全量数据初始化
忽略并继续执行
任务二:反向同步 B > A
不选择
忽略并继续执行
场景三:实例 A、B 都有库表结构和数据
任务一:正向同步 A > B
全量数据初始化
忽略并继续执行
任务二:反向同步 B > A
全量数据初始化
忽略并继续执行

操作步骤

本场景以构建上海地域自建 MySQL A 与北京地域腾讯云 MySQL B 的双向同步为例,A 初始状态有库表结构和数据,B 初始状态为空。发生主键冲突时以 A 的更新为准。A > B 的同步,主键冲突策略为冲突覆盖,同步 DDL + DML;B > A 的同步,主键冲突策略为冲突忽略,仅同步 DML。


创建同步任务一:正向同步 A > B

1. 登录 数据同步购买页,选择相应配置,单击立即购买
2. 购买完成后,返回 数据同步列表,可看到刚创建的数据同步任务,刚创建的同步任务需要进行配置后才可以使用。
3. 在数据同步列表,单击操作列的配置,进入配置同步任务页面。
4. 在配置同步任务页面,配置源端实例、账号密码,配置目标端实例、账号和密码,测试连通性后,单击下一步

设置项
参数
描述
任务设置
任务名称
DTS 会自动生成一个任务名称,用户可以根据实际情况进行设置。
运行模式
支持立即执行和定时执行两种模式。
源实例设置
源实例类型
购买时所选择的数据库 A 的类型,不可修改。
源实例地域
购买时选择的数据库 A 所在地域,不可修改。
服务提供商
选择“普通”。
接入类型
自建数据库一般可以选择公网方式,也可以选择 VPN 接入,专线或者云联网的方式,需要根据实际的网络情况选择。
本场景以“公网”为例,不同接入类型的准备工作请参考 准备工作概述
目标实例设置
目标实例类型
购买时选择的目标数据库 B 的类型,不可修改。
目标实例地域
购买时选择的目标数据库 B 所在地域,不可修改。
接入类型
本场景选择“云数据库”。
实例 ID
数据库 B 的实例 ID。
账号
数据库 B 的账号,账号权限需要满足要求。
密码
数据库 B 的密码。
5. 在设置同步选项和同步对象页面,将对数据初始化选项、数据同步选项、同步对象选项进行设置,在设置完成后单击保存并下一步

设置项
参数
描述
数据初始化选项
初始化类型
本场景选择结构初始化 + 全量数据初始化。
结构初始化:同步任务执行时会先将源实例中表结构初始化到目标实例中。
全量数据初始化:同步任务执行时会先将源实例中数据初始化到目标实例中。
已存在同名表
本场景选择前置校验并报错。
前置校验并报错:存在同名表则报错,流程不再继续。
忽略并继续执行:全量数据和增量数据直接追加目标实例的表中。
数据同步选项
冲突处理机制
根据业务情况自行选择,本场景选择冲突覆盖。
冲突报错:在同步时发现表主键冲突,报错并暂停数据同步任务。
冲突忽略:在同步时发现表主键冲突,保留目标库主键记录。
冲突覆盖:在同步时发现表主键冲突,用源库主键记录覆盖目标库主键记录。
同步操作类型
支持操作:Insert、Update、Delete、DDL。打开 “DDL 自定义”,可以根据需要选择不同的 DDL 同步策略。详情请参考 设置 SQL 过滤策略
双向同步最多支持在一个同步任务中选择 DDL。本场景在任务一中选择 DDL,在任务二中不选择。
同步对象选项
源实例库表对象
选择待同步的对象。
已选对象
支持库表映射(库表重命名),将鼠标悬浮在库名、表名上即显示编辑按钮,单击后可在弹窗中填写新的名称。
6. 在 A > B 的正向同步任务中,DTS 会进行源库和目标库参数校验。完成校验并全部校验项通过后,单击启动任务。在 B > A 的反向同步任务中,DTS 还会增加 DDL 校验。
说明:
如果校验任务不通过,可以参考 校验不通过处理方法 修复问题后重新发起校验任务。
在校验结果中出现告警项不影响启动任务,但推荐单击查看详情获取建议进行调整。
DDL 校验
源库和目标库参数校验

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

创建同步任务二:反向同步 B > A

正向同步和反向同步操作基本一致,以下仅对差异点进行详细说明。
1. 确定任务一的状态,在任务一进行到“同步增量”阶段,再开始配置任务二。 这个时间要求,仅对 B 数据为空的场景,其他场景不需要等待。
2. 设置同步源和目标数据库。 本步骤中的源和目标数据需要与任务一中的数据进行互换。

3. 设置同步选项和同步对象。
初始化类型:不选择。
已存在同名表:忽略并继续执行。
主键冲突处理机制:根据业务情况自行选择,本场景选择冲突忽略。
同步操作类型:双向同步仅支持在一个同步任务中选择 DDL。本场景在任务一中选择 DDL,在任务二中不选择。

4. 在校验任务页面,进行 DDL 校验。

结束同步任务

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

帮助和支持

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

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

文档反馈