腾讯云数据传输服务DTS完全对接指南:从迁移到同步再到订阅的生产级实践
一、认识腾讯云数据传输服务DTS
数据传输服务(Data Transfer Service,简称DTS)是腾讯云提供的一站式数据库数据传输解决方案。它支持MySQL、MariaDB、Percona、TDSQL-C、PostgreSQL、Redis、MongoDB、SQL Server等多种数据库类型,帮助用户在业务不停服的前提下完成数据库迁移,利用实时同步通道构建异地容灾的高可用架构,通过数据订阅满足商业数据挖掘与业务异步解耦等场景需求。
DTS的核心能力可以概括为三个层面:数据迁移、数据同步和数据订阅。这三者虽然都涉及数据传输,但在使用场景、任务周期和技术实现上有显著差异。
1.1 数据迁移:搬一次家
数据迁移是以整体数据库搬迁为目的的一次性短期任务,迁移完成后用户需要进行手动割接操作,将业务流量切换到新的数据库上。数据迁移适用于本地数据库上云、腾讯云内部跨实例迁移、第三方云厂商数据库迁移至腾讯云等场景。腾讯云DTS支持结构迁移、全量数据迁移以及增量数据迁移,可以实现在不停服的情况下在数据库实例之间进行平滑迁移。
1.2 数据同步:搭一座桥
数据同步是两个数据源之间的持续实时复制,适合长期运行的任务,支持在源端和目标端同时进行数据写入,并增加了数据冲突处理、任务配置动态调整等功能。数据同步广泛应用于云上云下多活、异地多活、跨境数据同步以及实时数据仓库等业务场景。
1.3 数据订阅:装一个水龙头
数据订阅聚焦于捕获数据库中关键业务的数据变化信息,将这些变化包装为消息对象推送到Kafka中,供下游业务订阅、获取和消费。DTS支持通过Kafka或Flink客户端直接消费数据,可用于缓存更新、ETL实时同步、业务异步解耦等场景。
理解这三者的区别是正确使用DTS的第一步。迁移是"搬一次家",同步是"搭一座桥",订阅是"装一个水龙头"——持续输出变化的水流。
需要先登录腾讯云控制台,点击:腾讯云控制台,还没有账号,点击:注册后再关联,已有账号点击:登录后再关联
二、数据迁移:从零开始的搬迁实战
数据迁移是DTS最基础也最常用的功能。以下以自建MySQL数据库迁移至腾讯云数据库MySQL为例,完整演示迁移任务的创建与执行流程。
2.1 迁移前的规划与评估
在启动任何数据迁移项目之前,必须进行充分的规划与评估。首先需要明确迁移的驱动因素:成本优化(云迁移可降低企业IT运维成本35%以上)、弹性扩展(应对业务峰值如电商大促时数据库读写负载激增)以及高可用需求(金融行业要求RTO小于5分钟,RPO等于0)。
其次要进行数据库兼容性验证:腾讯云DTS支持MySQL 5.6至8.0、SQL Server 2012+等主流版本。同时需要检查存储过程、触发器是否需适配腾讯云TXSQL引擎。
根据业务需求和停机窗口,可选择以下迁移策略:
- 全量迁移:适用于非核心业务且数据量小于1TB的场景,停机窗口为小时级
- 增量迁移(推荐):适用于核心业务和亿级数据场景,停机窗口小于5分钟
- 混合迁移:历史数据加实时业务结合,按批次控制停机窗口
2.2 网络准备
在创建迁移任务之前,必须先打通DTS与源库、目标库之间的网络通路。根据源库的部署形态不同,可以选择不同的接入方式:
- IDC自建数据库或第三方云厂商数据库:可选择公网、专线接入、VPN接入或云联网方式
- 云服务器上的自建数据库:选择"云服务器自建"接入方式
- 腾讯云数据库实例:选择"云数据库"接入方式
网络架构是迁移成功的关键因素之一。专线接入(Direct Connect)可将迁移速度提升3至5倍,延迟低于10毫秒。如使用公网迁移需启用SSL加密,带宽建议大于等于迁移数据量除以计划时间再乘以1.5作为冗余系数。
DTS支持的接入方式有"公网/云服务器自建/专线接入/VPN接入/云数据库/云联网/私有网络VPC",数据库的部署形态不同,可以选择的接入方式也不同。如果选择公网接入,需要确保源数据库的服务在外网环境下可访问,且外网连接保持稳定——网络波动或故障会导致迁移失败,而迁移一旦失败,就需要重新发起迁移任务。
2.3 源库账号权限配置
源库账号需要提前配置必要权限:
GRANT REPLICATION CLIENT, REPLICATION SLAVE, SELECT ON *.* TO 'dts_user'@'%';对于支持增量迁移的场景,权限需要更加完整:
GRANT RELOAD, LOCK TABLES, REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO 'dts_mig_user'@'%' IDENTIFIED BY 'YourPassword';权限说明:REPLICATION SLAVE权限确保DTS可读取binlog实现增量同步。如果源库为阿里云数据库时,不需要授权SHOW DATABASES,但需要创建至少一个非系统库,否则前置校验任务会失败。
目标库同样需要授权,需要具备的权限包括:ALTER、CREATE、DELETE、DROP、INSERT、SELECT、UPDATE等。
2.4 创建迁移任务
登录DTS控制台,在左侧导航选择数据迁移,单击新建迁移任务,进入新建迁移任务页面。在新建迁移任务页面,选择迁移的源实例类型和所属地域,目标实例类型和所属地域,规格等,然后单击立即购买。
购买完成后,返回数据迁移列表,可看到刚创建的迁移任务,刚创建的迁移任务需要进行配置后才可以使用。单击操作列的配置,进入配置迁移任务页面。在配置页面填写源和目标数据库等信息,然后单击测试连通性,测试连通性后单击下一步。
2.5 设置迁移选项与迁移对象
在设置迁移选项和迁移对象页面,需要对数据初始化选项、迁移选项、迁移对象选项进行设置。迁移类型可以选择结构迁移、全量迁移、全量+增量迁移的组合。配置完成后单击保存并下一步。
2.6 校验与启动
在校验任务页面,完成校验并全部校验项通过后,单击启动任务。前置校验会检查网络连通性、账号权限、版本兼容性、binlog配置等关键项。如果校验不通过,需要根据提示修正后重新校验。
2.7 增量同步与割接
对于选择了全量+增量迁移的任务,在全量迁移完成后会自动进入增量同步阶段。增量同步阶段,DTS会持续读取源库的binlog并将变更实时同步到目标库。
割接是迁移的最后一步,也是关键的一步。在确认数据同步无延迟、业务低峰期时,执行以下操作:
# 启动增量同步并创建校验任务
dtscli start-migrate-job --job-id dts-xxxx --skip-replace-check
dtscli create-compare-task --job-id dts-xxxx --compare-mode "full"数据校验完成后,将业务流量切换到新的数据库上,完成割接。
2.8 验证与回滚
迁移完成后需要进行数据验证。可使用DescribeCompareReport API获取差异明细。同时应准备回滚方案,以便在出现问题时快速恢复。
三、数据同步:搭建实时数据桥梁
数据同步适用于需要长期保持两个数据源之间数据一致性的场景,如云上云下多活、异地容灾、跨境同步及实时数仓等。
3.1 同步前的准备工作
首先需要仔细阅读使用说明,了解功能约束和注意事项。其次根据接入类型提前打通DTS与数据库之间的访问通道。
源数据库账号需要具备以下权限:
GRANT RELOAD, LOCK TABLES, REPLICATION CLIENT, REPLICATION SLAVE, SHOW DATABASES, SHOW VIEW, PROCESS, SELECT ON *.* TO '账号'@'%' IDENTIFIED BY '密码';3.2 创建同步任务
登录DTS控制台,在左侧导航选择数据同步,单击新建同步任务。在新建同步任务页面,选择同步的源实例类型和所属地域,目标实例类型和所属地域,规格等,然后单击立即购买。
关键配置参数说明:
- 创建模式:支持新建任务和创建类似任务两种模式
- 计费模式:支持包年包月和按量计费
- 规格:small、medium、large、xlarge、2xlarge,规格越高性能越好
- 标签:可设置标签键与标签值,便于高效管理多个任务
3.3 配置同步源和目标
购买完成后,返回数据同步列表,单击操作列的配置,进入配置同步任务页面。在设置同步源和目标数据库页签,填写源和目标数据库信息,测试连通性后单击下一步。
3.4 设置同步选项和同步对象
在设置同步选项和同步对象页面,对数据初始化选项、数据同步选项、同步对象选项进行设置。同步类型支持全量同步和增量同步。
3.5 业务影响说明
DTS在执行全量数据同步时,会将源库的全量数据全部读取一次,会增加源库的负载。以源库规格为8核16G为例,DTS任务默认采用8线程并发,全量导出阶段占用源库约18%-45%的CPU,增加源库约40-60MB/s的查询压力,占用约8个活跃session连接数。增量导出阶段对源数据库基本无压力,只有一个连接实时监听源库的binlog日志。建议在业务低峰期进行同步任务。
DTS默认采用无锁方式,同步过程中对源库不加全局锁(FTWRL),仅对无主键的表加表锁。
四、数据订阅:捕获数据变化并消费
数据订阅聚焦于捕获数据库中关键业务的数据变化信息,将这些变化包装为消息对象推送到Kafka中,供下游业务订阅、获取和消费。
4.1 创建数据订阅任务
登录DTS控制台,在左侧导航选择数据订阅,单击新建数据订阅。在新建数据订阅页选择相应配置:
- 计费模式:支持包年包月和按量计费
- 地域:源库为腾讯云数据库时需与源实例地域保持一致;源库为非腾讯云数据库时选择与数据消费地域保持一致
- 版本:选择Kafka版,支持通过Kafka客户端直接消费
4.2 配置订阅
购买成功后,返回数据订阅列表,单击操作列的配置订阅。在配置数据库订阅页面选择源数据库相应配置,测试连通性通过后保存。
源端实例需要提前开启Binlog并创建订阅账号:
CREATE USER '账号' IDENTIFIED BY '密码';
GRANT SELECT, REPLICATION CLIENT, REPLICATION SLAVE, PROCESS ON *.* TO '账号'@'%';
FLUSH PRIVILEGES;4.3 Kafka消费注意事项
数据订阅Kafka版(当前Kafka Server版本为V2.6.0)中,可以通过0.11版本及以上的Kafka客户端进行消费订阅数据。
关键注意事项:
- 目前不支持通过外网连接数据订阅的Kafka进行消费,只支持腾讯云内网的访问,并且订阅的数据库实例所属地域与数据消费的地域相同
- 订阅的消息保存在DTS内置Kafka(单Topic)中,默认保存时间为最近1天,单Topic最大存储为500G
- DTS订阅中内置的Kafka处理单条消息有一定上限,当源库中的单行数据超过5MB时,订阅任务可能会报错。2024年3月25日及之后创建的任务已优化此限制
- 为了保证数据可重入,DTS订阅引入Checkpoint机制。消息写入Kafka Topic时一般每10秒插入一个Checkpoint,标识数据同步的位点
- 数据格式选择JSON时,如果源库MySQL参数binlog_row_image设置为minimal,UPDATE语句中未更新字段的值会缺失,使用##DTS_NA_VALUE##表示
4.4 多语言消费Demo
腾讯云提供了Java、Go、Python语言的客户端消费Demo示例。以下是一个Python消费Demo的示例框架:
from kafka import KafkaConsumer
import json
# 配置Kafka消费者
consumer = KafkaConsumer(
'your_topic_name',
bootstrap_servers=['your_kafka_broker:9092'],
group_id='your_consumer_group',
security_protocol='SASL_PLAINTEXT',
sasl_mechanism='PLAIN',
sasl_plain_username='your_username',
sasl_plain_password='your_password',
auto_offset_reset='earliest',
enable_auto_commit=False
)
# 消费消息
for message in consumer:
data = json.loads(message.value.decode('utf-8'))
# 在此编写数据处理逻辑
print(f"Received: {data}")
# 手动提交offset
consumer.commit()Demo仅对数据做了打印处理,需要在此基础上自行编写数据处理逻辑。也可以使用其他语言的Kafka客户端消费并解析数据。
五、网络接入方式详解
DTS支持多种网络接入方式,选择合适的接入方式对传输的稳定性、安全性和速度至关重要。
5.1 公网接入
适用于源数据库有公网IP且可对外访问的场景。需确保源数据库服务在外网环境下可访问,并且外网连接保持稳定。公网接入的优点是配置简单、无需额外网络设施;缺点是受公网环境影响较大,网络波动可能导致任务失败。
5.2 专线接入
专线接入方式网络链路用户独占,无数据泄露风险,安全性高,满足金融、政企等高等级网络连接要求。专线接入可将迁移速度提升3至5倍,延迟低于10毫秒。适用于对数据传输安全性、稳定性和速度要求较高的生产环境。
5.3 VPN接入
通过VPN连接方式与腾讯云私有网络打通。适用于无法使用专线但需要安全传输的场景。
5.4 云联网
云联网可以实现不同VPC之间、VPC与IDC之间的互联互通。当实例接入类型为云联网时,需在源端子网内确保4~24个可用IP地址,以支持集群的正常转发与高可用容灾能力。
5.5 云服务器自建
适用于源数据库部署在腾讯云服务器CVM上的场景。选择"云服务器自建"接入方式,DTS可以通过内网直接访问,无需额外网络配置。
5.6 云数据库
适用于源或目标数据库为腾讯云数据库实例的场景。选择"云数据库"接入方式,DTS通过内网直接访问数据库实例。
六、高级特性与运维管理
6.1 断点续传
断点续传是DTS保障传输可靠性的重要机制。全量阶段支持分块导入,支持从当前中断处重入;增量阶段支持位点接续,保障任务持续运行。DTS会使用系统服务账号在目标端的TencentDTSData库下以任务ID创建一个表,用于记录CHECKPOINT,在任务发生中断时实现断点续传。
断点续传解决了网络抖动引发的链接中断问题,where条件过滤解决了用户只想同步部分数据的要求。
6.2 数据一致性校验
DTS提供独立于迁移任务的一致性校验工具,支持完整校验、抽样校验、指定列校验、行数校验,并能将不一致结果精确到行,自动生成订正SQL。行级CRC32校验确保数据一致性达99.999%。
对于数据量比较大、校验任务长期无法结束的情况,可以停止当前任务重新创建一致性校验任务,数据校验方式选择行数校验进行快速对比;或者选择内容校验同时降低抽样对比的比例。
6.3 监控与告警
DTS支持对数据迁移、数据同步、数据订阅任务过程中的事件进行监控并设置报警规则。在事件触发或者指标达到设定阈值时,及时通知用户采取措施。
配置告警的典型步骤:在控制台左侧导航选择告警管理 > 策略管理,进入告警策略配置页面,单击新建策略配置告警策略。例如可以配置:每1分钟收集一次"源实例数据抽取RPS",若DTS每秒读取源实例数据的行数连续3次小于1,则触发告警。
DTS任务中断时间大于1天、小于14天时也可触发告警。
6.4 常见故障排查
连通性测试不通过:检查数据库内账号层级是否对DTS任务账号进行了限制;在数据库所属网络的ACL规则中查看是否限制了DTS访问;在数据库关联的安全组规则中查看是否限制了DTS访问。
数据同步有延时或迁移慢:检查源库是否有大事务或者慢SQL,这些操作本身执行时间较长,DTS解析后再同步到目标端也需要一段时间,会导致进度卡住或者延迟。需要等大事务或者慢SQL执行结束后延迟会慢慢降下来,或者避免迁移/同步过程中源库有慢SQL或大事务。
数据消费异常:检查消费端网络环境是否满足要求(需在腾讯云内网且与DTS订阅任务同地域);检查启动Demo的参数填写是否有误,尤其是消费组密码。
七、计费模式与成本优化
7.1 计费模式
DTS支持包年包月和按量计费两种计费模式:
- 包年包月:预付费模式,适合业务量较稳定的长期需求,费用较按量计费更为低廉
- 按量计费:后付费模式,每小时产生收费订单并扣费,适合业务量有瞬间大幅波动的场景
7.2 计费项详解
DTS链路配置计费有三个关键因素:规格、是否跨地域、目标端地域。规格从small、medium、large、xlarge、2xlarge收费逐渐升高,规格越高传输性能越好。
数据迁移计费:全量迁移不计费,仅在增量迁移正常运行期间计费(包含数据一致性校验期间),到任务结束停止计费。任务暂停期间DTS会持续拉取源库的数据和Binlog,所以暂停期间仍会保持计费。
数据同步计费:包年包月购买后即扣费;按量计费任务配置期间不计费,任务正式启动才开始计费。仅在任务正常运行期间计费,任务中断期间不计费。暂停期间仍会保持计费。
数据订阅计费:按量计费模式在任务购买完成后即开始计费。数据存储目前暂不计费。
公网流量费用目前暂不计费。
7.3 成本优化建议
- 根据业务需求选择合适的规格,避免过度配置
- 长期稳定运行的任务优先选择包年包月
- 及时销毁已完成或不需要的任务,避免持续计费
- 数据迁移任务在完成割接后及时单击完成按钮结束任务
- 利用同地域内网传输,避免跨地域带来的额外成本
八、API与自动化运维
腾讯云DTS提供了丰富的API接口,支持通过API进行任务的创建、配置、启动、停止、查询等操作。API Explorer提供了在线调用、签名验证、SDK代码生成和快速检索接口等能力。
通过API可以实现DTS任务的自动化运维,例如在CI/CD流程中自动创建迁移任务、定时启动同步任务、通过API获取任务状态并触发告警等。
九、总结
腾讯云数据传输服务DTS是一站式的数据库数据传输解决方案,通过数据迁移、数据同步、数据订阅三大能力,覆盖了数据库上云、异地容灾、实时数仓、缓存更新、业务异步解耦等丰富的业务场景。本文从概念解析到实战操作,从网络规划到监控运维,从权限配置到成本优化,系统梳理了DTS的完整对接使用流程。掌握这些核心知识点,即可在生产环境中熟练运用DTS,实现安全、高效、稳定的数据传输。
常见问题问答
问1:DTS的数据迁移和数据同步有什么区别?
数据迁移是一次性的短期任务,用于将整个数据库搬迁到目标端,迁移完成后需要手动割接;数据同步是持续运行的长期任务,用于实时保持两个数据源之间的数据一致性,支持双向写入和冲突处理。迁移是"搬一次家",同步是"搭一座桥"。
问2:DTS支持哪些数据库类型?
DTS支持MySQL、MariaDB、Percona、TDSQL-C、PostgreSQL、Redis、MongoDB、SQL Server等多种数据库类型。具体支持的版本和链路请参考官方文档中的数据迁移/同步/订阅支持的数据库列表。
问3:数据订阅的Kafka消费有什么限制?
主要有以下几点:不支持通过外网消费,只支持腾讯云内网且与订阅任务同地域;内置Kafka单Topic默认保存最近1天数据,最大存储500G;单行数据超过5MB时订阅任务可能报错;消费端需使用0.11版本及以上的Kafka客户端。
问4:DTS任务执行过程中对源数据库有什么影响?
全量阶段会增加源库负载,以8核16G规格为例,占用约18%-45%的CPU,增加40-60MB/s的查询压力。增量阶段基本无压力,仅一个连接实时监听binlog。建议在业务低峰期执行全量任务。DTS默认采用无锁方式,仅对无主键的表加表锁。
问5:DTS如何计费?费用主要由哪些因素决定?
DTS计费有三个关键因素:规格(small到2xlarge)、是否跨地域、目标端地域。数据迁移仅增量迁移阶段计费;数据同步按量计费任务启动后开始计费;数据订阅购买后即开始计费。公网流量目前暂不计费。
问6:迁移或同步任务中断后如何恢复?
DTS支持断点续传机制。全量阶段支持分块导入从当前中断处重入;增量阶段支持位点接续。DTS会在目标端TencentDTSData库下记录CHECKPOINT,任务中断后重启可从断点继续传输。如果因网络问题中断,待网络恢复后任务会自动重试续传。



