云计算凭借弹性、经济等优势,已经被越来越多的企业所认可,企业越来越多的将业务搬迁至云上。然而为应对企业发展的不同时期、不同的业务需求,企业不可避免的需要面对数据库间数据迁移传输的问题。

阿里云数据传输解决方案支持数据迁移、实时数据订阅及数据实时同步等多种数据传输方式,提供更丰富多样、高性能、高安全可靠的数据传输服务。

阿里云数据传输解决方案具有以下优势:
  • 类型多样:阿里云数据传输解决方案通过核心产品DTS(Data Transmission Service)可实现多种同异构数据库间的数据传输,且支持数据迁移、数据订阅、数据同步等多种单双向传输方式。
  • 高性能:DTS 使用高规格服务器来保证每条迁移或同步链路都能拥有良好的传输性能。对于数据迁移,DTS 底层采用了多种性能优化措施,全量数据迁移高峰期时性能可以达到 70MB/s,20w TPS。
  • 安全可靠:DTS 底层为服务集群,集群内任何一个节点宕机或发生故障,控制中心都能够将这个节点上的所有任务秒级切换到其他节点上,链路稳定性高达 99.95%。DTS 内部对部分传输链路提供 7×24 小时的数据准确性校验,快速发现并纠正传输数据,保证传输数据可靠性。
  • 简单易用:DTS 提供可视化管理界面,提供向导式的链路创建流程,用户可以在其控制台简单轻松得创建自己的传输链路。

解决方案架构及核心产品

阿里云数据传输解决方案架构如下图所示。

架构说明
  • 源数据库与目标数据库间数据传输时,通过阿里云DTS服务,可实现数据迁移、订阅、同步等多种传输方式。
  • 阿里云数据传输解决方案支持多种数据源间的数据传输:

    • 数据迁移功能矩阵:
      数据源 结构迁移 全量数据迁移 增量数据迁移
      MySQL-->MySQL(RDS及自建) 支持 支持 支持(DML,部分DDL)
      MySQL-->DRDS/PetaData/OceanBase 支持 支持 支持(DML)
      MySQL-->Oracle(数据回流,需加白) 支持 支持 支持(DML)
      Oracle-->MySQL(RDS及自建) 支持 支持 支持(DML,部分DDL)
      Oracle-->DRDS 手工 支持 支持(DML)
      Oracle-->RDS For PPAS 支持 支持 支持(DML)
      Oracle-->ADS 支持 支持 支持(DML)
      Oracle-->Oceanbase 支持 支持 支持
      SQLServer-->SQLServer 支持 支持 支持(DML)
      PostgreSQL-->PostgreSQL 支持 支持 支持(有主键表的DML)
      MongoDB-->MongoDB 支持 支持 支持
      Redis-->Redis 支持 支持 支持
      DB2-->MySQL 支持 支持 支持(DML,部分DDL)
    • 数据同步功能矩阵:
      数据源 说明
      RDS For MySQL-->RDS For MySQL 1000 km+ 情况下,实现秒级同步延迟
      RDS for MySQL<-->RDS for MySQL 双向数据同步
      RDS for MySQL-->MaxCompute 数据同步到 MaxCompute 中,每张表对应两张表:全量基线表;增量日志表。通过全量基线表+增量日志表的 merge,可以获取任意时刻的全量数据
      RDS for MySQL-->Datahub 通过这个功能支持 MySQL->流计算 的数据实时同步
      RDS for MySQL-->AnalyticDB 支持实时报表分析、实时可视化大屏等实时数仓系统
      MySQL-->DRDS 目前通过数据迁移-增量数据迁移实现
      MongoDB-->MongoDB 高德异地容灾项目
    • 数据订阅功能矩阵:
      数据源 DML DDL 备注
      RDS for MySQL 支持 支持 -
      DRDS 支持 支持 支持 DRDS 实例层面数据订阅

核心产品

DTS(Data Transmission Service),是阿里云提供的一种支持多种数据源之间数据交互的数据流服务。它提供了数据迁移、实时数据订阅及数据实时同步等多种数据传输能力。更多DTS产品介绍请参考数据传输章节。

技术原理

  • 数据迁移
    数据传输服务DTS在数据迁移的过程中,通过数据的全量迁移和增量迁移结合,迁移的源端数据库无需在迁移过程中停机,应用服务不会因为数据迁移出现中断。 数据迁移的技术原理如下图所示。

    数据迁移过程:
    1. 结构迁移:将源实例中的结构对象定义一键迁移至目标实例。
    2. 全量迁移:源实例中的历史存量数据迁移至目标实例。
    3. 增量数据迁移:全量迁移的同事进行增量数据拉取迁移,保障被迁移数据的完整性和一致性。
  • 数据迁移
    阿里云数据迁移支持:
    • 多种迁移类型:结构对象迁移、全量数据迁移以及增量数据迁移。
    • 不停服迁移,迁移过程需要经历:
      1. 结构对象迁移
      2. 全量迁移
      3. 增量数据迁移
    通过有效的规划和演练,整个数据迁移的中断时间可以缩短至应用流量的切换时间,从而实现秒级切换。
  • 数据订阅
    数据订阅支持实时拉取RDS实例的增量日志,用户可以通过DTS SDK来数据订阅服务端订阅增量日志,根据业务需求,实现数据定制化消费。

    DTS服务端的日志拉取模块主要实现从数据源抓取原始数据,并通过解析、过滤、标准格式化等流程,最终将增量数据在本地持久化。

    日志抓取模块通过数据库协议连接并实时拉取源实例的增量日志。例如源实例为RDS For MySQL,那么数据抓取模块通过Binlog dump协议连接源实例。

  • 数据同步
    数据传输服务的实时同步功能能够实现任何两个RDS实例之间的增量数据实时同步,并支持RDS实例到ADS和ODPS等分析型数据库的数据实时同步。

    同步链路的创建过程包括: 1. 同步初始化, 同步初始化主要将源实例的历史存量数据在目标实例初始化一份。 2. 增量数据实时同步, 当初始化完成后进入两边增量数据实时同步阶段,在这个阶段,DTS会实现源实例跟目标实例之间数据动态同步过程。

    增量数据实时同步过程,DTS的底层实现模块主要包括: 1. 日志读取模块 2. 日志读取模块从源实例读取原始数据,经过解析、过滤及标准格式化,最终将数据在本地持久化。日志读取模块通过数据库协议连接并读取源实例的增量日志。如果源DB为RDS MySQL,那么数据抓取模块通过Binlog dump协议连接源库。 3. 日志回放模块 4. 日志回放模块从日志读取模块中请求增量数据,并根据用户配置的同步对象进行数据过滤,然后在保证事务时序性及事务一致性的前提下,将日志记录同步到目标实例。

    DTS实现了日志读取模块、日志回放模块的高可用,DTS容灾系统一旦检测到链路异常,就会在健康服务节点上断点重启链路,从而有效保证同步链路的高可用。

典型应用场景

数据传输几乎在各行各业各种场景均有涉及,尤其是异地灾备、异地多活、实时分析、精准营销等场景。更多场景介绍请参考使用场景章节。