数据传输服务DTS

各类数据源之间的零停机数据迁移和实时同步,助您构建高安全、高可靠、易扩展的数据架构

数据传输服务(Data Transmission Service,DTS)支持关系型数据库RDBMS、NoSQL、OLAP等数据源之间的数据迁移同步。它提供数据库不停服迁移、实时数据订阅及数据实时同步等多种数据传输方式。通过DTS,您可以在源数据库正常运行情况下,平滑地完成数据迁移。同时,您还可以利用DTS进行RDS实例间的数据实时同步,有效解决数据异地容灾、减少跨地区访问等业务问题。除此之外,DTS还支持RDS实例增量数据实时订阅,通过数据订阅,您可以实现轻量级缓存更新、异步消息通知及定制化数据实时同步等业务场景。

优点

高性能
特定场景下,全量迁移性能高达70MB/s,实时同步性能高达30000+ Records/s
高可靠
DTS会持续监控系统中的所有任务,任何一个任务发生故障,它都会从中断位置断点重启任务,业务无感知
简单易用
无需部署安装,购买完成后,通过三个步骤的配置即可成功启动传输任务
任务状态透明直观,运维监控体系完善,极大降低使用成本
数据实时同步
支持任意两个RDS实例之间的数据实时同步
同步过程中支持动态修改同步对象,查看同步状态及同步性能等操作

产品详情

  • 零停机数据迁移

    数据传输服务DTS可以帮助您实现零停机数据迁移。在迁移过程中,源数据库可以正常提供服务,迁移过程中,源数据库产生的所有更新数据都会被同步复制到目标实例。
    当源数据库的全量数据完全迁移到目标实例后,目标实例就会跟源实例保持增量数据实时同步。在增量数据实时同步过程中,您可以选择一个业务低峰期,将应用平滑切换到目标实例。

  • 丰富多样

    支持大部分常见数据库类型 (MySQL/SQLServer/Oracle等),支持同构数据源之间的迁移同步,例如MySQL->MySQL。同时,支持异构数据源之间的迁移同步,例如Oracle->MySQL。


    支持本地IDC自建数据源到ApsaraDB for RDS、ECS的上云迁移,ECS、RDS之间的迁移,以及任何两个RDS之间的迁移。


    支持数据迁移、数据实时同步及增量数据实时订阅等多种传输方式。

  • 数据迁移

    零停机数据迁移

    迁移过程中,源数据库可以正常提供服务。迁移过程中,源数据库产生的所有变更数据都会被持续同步到目标实例。
    当源数据库的全量数据迁移完成后,目标实例就会保持跟源实例的增量数据实时同步,您可以选择业务低峰期,将业务平滑切换到目标实例。


    丰富多样

    支持同异构数据源之间的数据迁移,同构数据源支持MySQL、SQLServer、PostgreSQL等关系型数据库及NoSQL Redis,异构数据源支持Oracle->MySQL之间的数据迁移。
    支持从本地自建数据库到RDS、ECS的数据迁移,支持ECS自建数据库到RDS的数据迁移,同时支持任意两个RDS实例间地数据迁移。

  • 实时数据订阅

    支持RDS For MySQL的binlog日志实时订阅。


    订阅通道运行过程中,支持动态修改订阅对象、在线查看订阅数据及消费时间修改等操作。

  • 完善的监控体系

    提供链路状态,同步流量,同步延迟,订阅消费延迟等多种性能指标,让您全方位了解链路状况。

  • 简单易用

    DTS自动管理迁移过程中的复杂性,包括在迁移过程中自动复制源数据库中所发生的变化。

  • 高稳定性

    DTS会持续监控源跟目标实例的健康状况,如果发现数据源(RDS)连接信息发生变化,DTS会动态修改任务的数据源连接,保证任务稳定性。

  • 高性能

    数据传输服务DTS支持多种传输优化手段,包括传输数据压缩、连接重传等多种网络优化措施,同步粒度细化到事务级别,有效提升传输性能。

为金融科技、电子商务和游戏行业创建稳固的云端数据库

这本白皮书介绍了阿里云的云原生数据库 POLARDB,用真实的场景调研了常规数据库面临的难题和挑战,包括数据库保护、备份与迁移。

领军客户实战场景

  • 零停机迁移
  • 数据异地灾备
  • 减少跨地区访问
  • 实时数据同步
  • 轻量级缓存更新策略
  • 异步消息通知
零停机迁移

零停机迁移

DTS支持零停机数据迁移,在迁移过程中,源数据库可以正常提供服务。迁移过程中,源数据库产生的所有变更数据都会被持续同步到目标实例。当源数据库的全量数据迁移完成后,目标实例就会保持跟源实例的增量数据实时同步,您可以选择业务低峰期,将业务平滑切换到目标实例。

数据异地灾备

数据异地灾备

由于地区断电、断网等客观原因,产品可用性并不能达到100%。当出现这些故障时,如果用户业务部署在单个地区,那么就会因为地区故障导致服务不可用,且不可用时间完全依赖故障恢复时间。

为了解决地区故障导致的服务不可用,提高服务可用性,可以在异地构建热备中心。当业务中心发生地区故障时,直接将业务流量切换到异地灾备中心,秒级恢复服务。

减少跨地区访问

减少跨地区访问

对于用户分布在多个区域的业务,如果业务单地区部署,那么其他地区的用户需要跨地区远距离访问服务,导致访问延迟大,用户体验差的问题。为了优化访问体验,可尽量减少跨地域访问。通过DTS数据实时同步功能,可以在每个地区构建一个只读服务,地区内的读访问请求可以全部落在地区内部,所有用户的写请求路由回读写中心。由此很大程度降低跨地域的远距离访问,提升用户体验。

这种缓存更新策略的优势在于:

  • 该架构由中心和单元组成。 所有区域的用户写请求都被路由回中心。 中心的数据与带有DTS的单元同步。 可以将不同区域的用户的读取请求路由到附近的单元,以避免远程访问,并减少访问延迟。

实时数据同步

实时数据同步

通过DTS的数据库增量日志实时订阅功能,可以实现RDS到Analytic DB的数据实时同步。 这个功能可以帮助用户实现实时报表、CRM等实时应用。

轻量级缓存更新策略

轻量级缓存更新策略

为加快业务访问速度,提升业务读并发,很多用户都会在业务架构中引入缓存层。业务所有读请求全部路由到缓存层,更新数据持久化到存储DB。对于这种架构用户需要解决,业务数据更新时,缓存层中的缓存数据更新问题。
通过DTS提供的实时数据订阅功能,可以在不影响DB的情况下,异步订阅DB的增量数据,更新缓存的数据,实现轻量级的缓存更新策略。

这种缓存更新策略的优势在于:

  • (1) 更新路径短,延迟低
    缓存失效为异步流程,业务更新DB完成后直接返回,不需要关心缓存失效流程,整个更新路径短,更新延迟低
    (2) 应用简单可靠
    应用无需实现复杂双写逻辑,只需启动异步线程监听增量数据,更新缓存数据即可
    (3) 应用更新无额外性能消耗
    因为数据订阅是通过解析DB的增量日志来获取增量数据,获取数据的过程对业务、DB性能无损.

异步消息通知

异步消息通知

通过DTS数据订阅,可以实现异步松耦合业务间的异步消息通知机制。这种消息通知机制,是通过DTS抓取上游业务DB的变更数据,来消费触发下游业务的更新逻辑。
相对于用户在上游业务更新过程中,投递异步消息的方式,这种消息通知机制,具备如下优势:
更新路径短,延迟低
上游应用更简单可靠

相关资源

实战篇

阿里云上的数据库性能基准测试指南

本解决方案书为您提供了基于常用基准(包括事务处理性能委员会(TPC)和sysbench基准)实施数据库性能测试的指南。

实战篇

在阿里云上部署多区域应用程序

该解决方案使您可以在多个区域中部署应用程序;将区域网络连接到中央内部网络;将基于Express Connect的部署迁移到基于CEN的部署;并在RDS数据库系统的多个跨区域RDS MySQL之间部署复制。

查看全部

常见问题

1.DTS是否能支持两个不同阿里云账号下的RDS实例之间的数据迁移?
可以进行跨阿里云账号RDS实例迁移时,需要以目标RDS实例所属的阿里云账号登陆DTS。同时,配置迁移任务时,源实例需要选择有公网IP的自建数据库,然后配置RDS实例的连接信息。

2.DTS的增量迁移基本原理是什么?
DTS 的增量迁移是实时获取在迁移过程中,源数据库产生的增量数据,然后在全量迁移完成后,开始同步到目标 RDS 实例中。

3. DTS 迁移过程中,是否会锁表,对源库是否有影响?
如果用户选择了全量数据迁移和增量数据迁移,在全量数据迁移过程中,如果迁移对象中存在非事务且无主键(例如Myisam)的表,那么为保证迁移数据一致性,DTS会给这些表上只读锁,其他情况下,DTS不会给源实例上锁。

4. DTS迁移时,通过内网还是公网访问ECS?
当ECS为下面两种情况时,DTS会通过外网访问ECS,其他情况下通过内网访问。1)ECS实例为VPC网络2)ECS为迁移链路源实例,且跟目标实例不在一个地区。

5. DTS迁移时,是通过内网还是公网访问RDS实例?
当RDS为迁移源实例且跟目标实例不在一个地域时,DTS通过公网访问RDS实例。其他情况下,DTS通过内网访问RDS实例。

6. 数据迁移过程中,源实例的DDL操作是否会被同步到目标库
如果源实例为MySQL或MongoDB,那么DDL操作会被同步。如果源实例为PostgreSQL,DDL操作暂不支持同步 。

7.DTS是否支持将VPC ECS上的自建数据库迁移到RDS?
支持,但是ECS实例需要挂载EIP,配置迁移任务时,源实例选择ECS实例,DTS会自动选择使用ECS的弹性公网IP访问ECS实例。

8. DTS进行RDS迁移时,是从RDS的主库还是备库拉取数据?
DTS进行数据迁移时,是从RDS实例的主库拉取数据。

9. DTS是否支持在一个RDS实例中,复制数据库A的数据到数据库库B?
支持,DTS支持库名映射功能,可以实现在一个RDS实例内实现两个数据库之间的数据复制。

10. DTS是否支持进行两个RDS之间,不同库名的数据库之间的迁移?
不能。经典网络中的 ECS 实例和专有网络只能通过公网(外网)通信。

11. 使用DTS进行数据迁移,源数据库的数据会不会在迁移后被删除掉?
不会,DTS进行数据迁移时,只是复制源数据库的数据,不会对源数据库的数据产生影响。

12.创建迁移任务时,报获取迁移结构失败是什么原因?
这是由于DTS连接不上源实例导致获取结构对象失败。
可能的原因包括:
1)配置的连接地址信息有误
2)本地数据库配置了防火墙
3)数据库远程监听没有启动

13.数据迁移时,目标数据库中多了一个表increment_trx,这个表是做什么的?
increment_trx是DTS增量迁移时在目标实例中创建的位点表,主要用于记录增量迁移的位点,解决任务异常重启后的断点续传问题。在迁移过程中勿删除,否则会导致迁移失败。

14.DTS是否支持定时迁移?
DTS暂时不支持定时自动迁移。

15.使用DTS将自建数据库迁移到RDS,为什么迁移完成后,RDS的空间大小会比源数据库大?
当使用DTS将自建数据库迁移到RDS后,由于是通过SQL逻辑迁移的,所以目标RDS实例除了数据之外,还会写入日志,同时,数据导入到RDS实例也会产生碎片。数据迁移导致的日志和碎片会使RDS使用的空间比源数据库大。

16.DTS是否支持VPC RDS实例的数据迁移?
支持,配置迁移任务时,直接配置RDS实例ID即可。

17.全量迁移报java.sql.BatchUpdateException: INSERT, DELETE command denied to user ‘user'
如果目标实例为RDS实例,那么一般都是由于目标RDS实例被锁定了,导致账号写权限被回收。可以先解锁RDS实例后,重启任务。

18.迁移的目标库中已经存在表了,使用DTS进行数据迁移是否会覆盖掉这些数据?
不会,DTS要求目标实例中的迁移对象为空。如果配置的迁移表在目标库中已经存在数据,那么预检查时会报错。

19.迁移任务显示 锁定中 是什么原因?
当您的阿里云账号欠费,同时未及时续费,那么您账号下的迁移任务的状态会调整为锁定中。

20.请问下,如果先进行一个全量迁移任务,全量迁移完成后,再进行一个增量同步任务同步增量数据,这期间源数据库的更新数据是否会被完整同步到目标数据库
会存在丢数据的风险。如果单独做增量迁移任务,那么DTS会从任务启动时间同步数据。在任务启动之前,源数据库产生的增量数据都不会被同步到目标实例。所以从全量迁移完成到增量迁移任务启动之前这段时间内的增量数据会丢失。 如果需要进行不停机数据迁移,建议配置任务时,迁移类型选择 结构迁移+全量数据迁移+增量数据迁移。

21.DTS是否支持进行两个阿里云账号下RDS之间的数据迁移
可以,进行跨账号RDS实例之间的迁移时,需要使用目标RDS实例所属的阿里云账号登陆DTS控制台,然后源实例选择其他阿里云账号下的RDS实例。

22.迁移任务一直卡在增量数据迁移阶段,什么时候结束?
增量数据迁移阶段,目标数据库会跟源数据库保持实时同步,不会自动结束。如果您已经完成迁移,可以手动结束任务。

23.DTS是否支持将一个阿里云账号下的ECS自建数据库迁移到另外一个账号下RDS实例?
可以,您需要使用目标RDS实例所属的阿里云账号登陆DTS控制台,然后源实例的类型选择 有公网IP的自建数据库,配置ECS自建数据库的连接方式。

24.迁移任务迁移完成了,释放该迁移任务是否会影响迁移数据库的使用?
不会。

25.迁移任务迁移完成了,释放该迁移任务是否会影响迁移数据库的使用?
DTS暂时不支持定时自动迁移。

26.通过DTS,如何实现异地数据灾备?
使用DTS的实时数据同步功能,进行主数据库跟数据灾备之间的数据实时同步。当主实例宕机后,将业务切换到灾备实例。

27.DTS是否支持RDS跟本地自建数据库之间的数据实时同步?
支持,可以提交工单申请开通。

28.数据订阅SDK无法订阅到消息,客户端提示: client partition is empty,wait partition balance
数据订阅启动时,比较慢,一般需要2分钟,此时客户端会提示 client partition is empty,wait partition balance。

29.订阅通道无法修改消费位点
一般是因为订阅通道还有下游在消费,可以先到DTS控制台查看消费来源IP,查看是否还有下游SDK在消费数据。如果存在,那么先停止下游消费后,重新修改消费位点。

30.数据订阅SDK报 keep alive error,是什么原因?
出现这个问题有两个可能原因:
1) SDK通过内网访问订阅通道,目前DTS不支持SDK通过内网访问订阅通道
2) 消费位点不在数据订阅通道的数据范围内,需要修改消费位点后,重启SDK。

31.DTS会监控RDS实例吗?
会,DTS会监控RDS实例,一旦RDS实例发生主备切换,DTS会自动容灾。

32.使用数据订阅订阅数据时,报如下错误:failed to get master store addr for topic aliyun_sz_ecs_rdsr*****y-1-0错误
首先确认,SDK中 usePublicIp = true如果上面的设置正确,那么排查下消费位点是否在订阅通道的数据范围内,如果不在,那么修改消费位点后,重启SDK。

33.数据订阅启动SDK时,报如下错误Specified signature is not matched with our calculation. at com.aliyuncs.DefaultAcsClient.parseAcsResponse(DefaultAcsClient.java:139)
这个是因为SDK中配置的Access Key/Access Secret 不属于订阅通道对应阿里云账号。修改SDK中 Access Key/Access Secret 后,重新启动SDK。

34.一个sdk客户端 可以订阅多个通道吗?
不可以DTS支持在服务端实现下游SDK的可靠性容灾。当多个SDK下游订阅同一个订阅通道时,只有一个SDK会接收到数据,其他SDK会作为这个SDK的backup,只有当接收数据的SDK发生异常时,DTS会从剩余SDK中选择一个健康节点,向其分发数据。

35.启动订阅SDK时报get guid info failed,是什么原因?
这个是由于您在SDK中设置的订阅通道ID不对。需要将示例代码中的client.askForGUID("订阅通道ID");这里的“订阅通道ID”替换成您要订阅的订阅通道对应的ID。

暖心服务,为你而来

1对1售前咨询、7x24服务、更快速的响应以及更多的免费工单。

1对1售前咨询

由经验丰富的云专家为不同规模企业提供一对一的售前咨询。了解更多

24/7 技术支持

售后服务时间从每周5天,每天10小时延长到每周7天,每天24小时。了解更多

更好的技术支持

基本售后支持计划的免费工单数量从每季度3个提升为6个。了解更多

更快的服务响应时间

针对一般指导,阿里云售后响应时间从36小时缩短到18小时。了解更多