一、DTS是什么
DTS(Data Transmission Service, 数据传输服务),用于在关系型数据库、NoSQL数据库、数据仓库之间迁移数据。
可以使用DTS将数据迁移至阿里云,也可以在阿里云和本地数据系统之间做数据迁移。
二、DTS的优势
相比传统的数据传输工具,DTS的优势:
1)传输过程中保证高稳定性
2)支持多种数据传输方式,包括:数据迁移、数据集成、数据同步、数据订阅。
3)支持各种数据源直接的数据迁移。(如MySQL,redis等)
4)支持多种数据库引擎作为源和目标
5)支持断点续传:避免了硬件和网络故障导致的中断
6)支持定时任务
三、数据传输方式
3.1、数据迁移
DTS可用于在数据源之间迁移数据:
- 数据迁移通常用于需要最小化停机时间的一次性迁移
- 在增量数据迁移期间,源数据库中正在进行的数据变更会实时同步到目标数据库
3.2、数据集成
定期迁移数据:可以为数据迁移任务配置定时执行策略
数据集成通常用于大型数据仓库中的周期性迁移,例如每天晚上定时执行,把白天产生的数据传输到数据仓库
3.3、数据同步
DTS可做到实时同步数据源之间的数据变更:
- 通常用于数据库之间的数据传输
- 数据同步支持单向同步和双向同步
- 与增量迁移相比,数据同步实时性更好
3.4、数据订阅
DTS可获取数据源的数据变更,并提供”发布/订阅“服务
四、DTS的工作原理
4.1、DTS的系统架构
DTS系统架构的关键点:
- 主备冗余:DTS的每个功能模块(迁移模块、同步模块、订阅模块)都部署在主备冗余的服务器上。通过容灾系统定时检测每台服务器的健康情况,如果某台服务器故障,服务器上的工作负载将以最小的延迟,切换到运行正常的备服务器上。
- 接入地址动态检测:对于数据同步和数据订阅,容灾系统会检测数据源接入的地址是否发生变更,如果接入地址已变更,容灾系统会重新配置数据源以保证数据连接正常运行。
4.2、数据迁移工作原理
数据迁移包括三个阶段:
- 结构迁移(即表结构迁移)
- 全量数据迁移(即表历史数据迁移)
- 增量数据迁移(即表增量数据迁移)
在数据迁移前,DTS需要再目标数据库中重新创建数据结构。
对于异构数据库之前的迁移,DTS会解析数据库的DDL代码,然后将代码转换成目标数据库语法,然后在目标数据库中重新创建结构对象。
在全量数据迁移时,DTS会将源数据库小红的历史数据全部迁移到目标数据库。迁移过程中,源数据库保持运行状态,在迁移过程中扔不断做数据更新。DTS使用增量数据读取模块来获取全量数据迁移过程中发生的数据更新。当全量数据迁移开始时,增量数据读取模块也将被激活。在全量数据迁移节点,增量数据会被解析,并重新格式化并存储在本地DTS服务器上。
当全量数据迁移完成后,DTS会检索本地存储的增量数据,重新格式化,并将数据更新在目标数据库上执行,直到所有的增量更新都写入到目标数据库,这样源数据库和目标数据库中的数据就完全一致了。
4.3、数据同步的工作原理
DTS可用于在两个数据源之间做正在进行变更数据的同步。
数据同步分2个阶段:
- 同步初始化:DTS将源数据库的存量数据加载到目标数据库
- 数据实时同步:DTS同步正在进行的数据变更,并保持数据库和目标数据库的同步。
为了同步正在进行的数据变更,DTS使用两个处理事务日志的模块:
- 事务日志读取模块:使用相应的协议与源数据库通信,以读取事务日志。例如,使用binlog dump协议从MySQL中读取事务日志。
- 事务日志应用模块:从”事务日志读取模块“中读取并筛选出数据更新,仅保留与正在同步的对象相关的数据更新,然后把数据更新在目标数据库上执行。在这个过程中,事务日志应用模块会保持事务的ACID属性。
4.4、数据订阅的工作原理
DTS的数据订阅模块获取数据更新,并提供”发布/订阅“的形式,不同业务方可以自己订阅。
日志处理模块使用相应的协议与源数据库进行通信,以读取事务日志。例如,使用binlog dump协议从MySQL中读取事务日志。然后日志处理模块解析事务日志、过滤数据、格式化更新记录,并最终将处理后的数据在本地持久化。
五、DTS的产品优势
DTS性能好、稳定性好、可与阿里云数据库无缝对接:
1、兼容多种数据库引擎:Oracle, MySQL, PlarDB-O等。
2、支持多种应用场景,包括数据迁移、数据同步、数据订阅。
3、支持业务不停服迁移:数据迁移期间的实际停机时间可降低到分钟级。
4、高性能:峰值数据传输速率可达到 70 MB/S。
5、高可用:每个集群有多个服务器节点,如果一个节点故障,控制中心会再几秒钟内将工作负载切换到集群中正常的节点。
对于某些关键传输的链路,DTS会持续验证数据完整性,并自动进行更正。
DTS各模块之间的数据流是安全且可恢复的。
6、简单易用:DTS使用时只需要单击几下创建任务,可轻松监控任务,并查看关键统计数据,如传输状态、进度、性能。
六、DTS的应用场景
6.1、场景1:业务不停服迁移
传输方式:数据迁移
传统的数据迁移怎样做的呢?
在迁移前,先停止向源数据库写入,然后迁移数据,迁移数据过程可能要花费几小时甚至几天时间,这段时间业务都是不可用的。
使用DTS做数据迁移,停机时间非常短:
在数据迁移期间,唯一停机的时间是”将应用程序切换到目标数据库“时,其余整个迁移过程中,应用扔可保持运行。
通常来说,切换目标数据库的时间可以降低到分钟级。
6.2、数据异地灾备/异地多活
传输方式:数据同步
异地灾备主要用于一个地区机房故障,可以使用另一个机房进行灾备。异地直接通过DTS实现数据的双向实时同步,以保持地域间的副本同步。
这样当一个地区机房故障,可以切换到另一机房。
6.3、异地多活
通过在不同地区部署多个业务单元,各业务单元直接通过DTS实现数据的双向实时同步。一个业务单元故障,切到另一单元,即基于多个业务单元的冗余来实现更高的可用性。
6.4、与阿里云BI系统集成
传输方式:数据同步
把DB数据实时同步到BI系统
6.5、实时数据分析
传输方式:数据订阅
6.6、轻量级缓存更新
传输方式:数据订阅
DTS通过提供订阅的功能,可以让业务实时了解数据变更,以便更新缓存。
该设计的优势:
写请求提交到数据库后就算完成,不必等待缓存更新
6.7、业务解耦和异步处理
传输方式:数据订阅