开发者学习笔记【阿里云云数据库助理工程师(ACA)认证:使用DTS完成数据库从线下到线上的迁移(一)】
课程地址:https://edu.aliyun.com/course/3112080/lesson/19074
使用DTS完成数据库从线下到线上的迁移(一)
课程目标
学习完本课程后,你将能够:
1. 了解阿里云数据传输服务 DTS
2. 掌握阿里云 DTS 产品功能、基本技术原理、应用场景以及最佳实践
内容介绍
一、行业趋势与挑战
二、产品介绍
2.1架构和原理
2.2产品支持拓扑
2.3产品应用场景
三、最佳实践
一、行业趋势与挑战
1、行业趋势——数据的未来是上云
国际权威研究机构 Gartner 发布《 The Future of the Database Management System(DBMS)Market Is Cloud 》报告,鲜明指出:数据库的未来是上云
数据来源:
https://blogs.gartner.com/adam-ronthal/2019/06/23/future-database-management-systems-cloud/
报告认为,数据库的未来必须是上云,目前云数据库已为数据库市场的增收贡献一半以上的份额。与传统数据库不断下降的营收相比,云数据库正在积极地快速增长。到2022年,预收有3/4的数据库天然部署或迁移到云上。
2、其他不断增长的数据库传输服务的要求
数据库异地灾备:如果为了提高数据安全可靠性,需要构建数据库异地灾备的功能。
数据库异地多活:城市级别的故障灾害,影响服务的可持续性;远距离用户访问延迟高,严重影响用户体验。单地域的技术体系架构越来越显示出不足。
数据中台数据实时集成:现有很多用户采用离线数据采集构建数据中台,实现数据分析,数据分析结果的时效性赶不上业务的发展。因此需要构建实时的数据传输链路,构建数据中台数据实时集成
实时数据订阅、业务解耦:存在依赖关系的上下游业务,希望不影响上游稳定性的情况下,低成本得实现下游业务通知机制。需要使用数据订阅功能,实时获取上游业务的数据库更新数据,触发下游业务逻辑
二、产品介绍
数据传输服务 DTS 概述:
数据传输服务( Data Transmission Service ,简称 DTS )支持关系型数据库、 NoSQL 、大数据( OLAP )等数据源间的数据传输。它是一种集数据迁移、增量数据实时订阅及数据实时同步于一体的数据传输服务。
2.1架构和原理
系统架构:
源端支持多种多样的数据,可以在用户控制台或 OpenAPI 配置 DTS 的任务, DTS 数据迁移服务主要分为几个步骤:第一预检查,当用户配置完源端和目标端的数据传输服务 DTS 任务时就会启动预检查,检查两个数据库之间是否满足做 DTS 数据传输条件。之后给出一个上云评估的报告,再进行结构迁移,将源端数据库的数据库/表、视图索引、存储过程函数等对象结构进行迁移,如果是涉及到不同数据库之间做结构迁移,还会对相应的库表结构进行转换,形成目标数据库,创建结构的语句,在目标端创建相应的库表结构。进而是全量数据迁移,将源端数据库全量的数据迁移到目标端。最后通过日志解析,实时捕获源端增量变化的数据,将增量变化的数据写入目标库,以实现实时的数据同步。
阿里经济体数据库全球化和异地多活底座
9年打磨支撑双11大促
DTS 支持多达20多种数据源和目标,服务近5万企业客户
DTS 数据实时同步原理:
DTS 数据实时同步的原理主要分为几个部分,第一部分就是结构迁移,之后就是全量迁移,在全量迁移前 DTS 会启动一个增量数据采集服务,用来记录在全量迁移期间源端数据库产生增量变化的数据,在全量迁移完成之后,会将全量迁移期间产生增量变化的数据持续不断的按顺序写入到目标库,由于 DTS 增量采集和增量写入的速度远大于源端业务写入的速度,因此,在未来的某一时刻, DTS 可以将源端和目标端的数据同步完整,实现两边数据库数据的一致性,因此,在未来某一时刻,可以将原端所有数据同步到目标端,保证原端和目标端两边数据的一致性。
结构迁移:迁移元数据。数据类型准确、 PK / UK /索引约束准确,可以实现异构数据库之间的数据类型转换
全量迁移:迁移存量数据。对数据库影响低、速度快
增量拉取:捕获迁移过程中的变化数据。数庭保真、不丢数据
增量写入:迁移增量数据。数据一致、链路无延迟
全量数据校验:保障源和目标数据一致性。快速、具备订正能力
2.2产品支持拓扑
当前 DTS 支持的同步拓扑,可以帮助用户实现1对1的同步、级联的同步、1对多的同步和多对1的同步,以满足用户各种各样的同步场景
支持的数据源和目标:
在数据迁移和数据同步任务中支持的数据源和目标类型稍微有一些差异,但大体功能是类似的。具体如下表:
数据迁移功能 |
MySQL->MYSQL、Oracle、PolarDB for MySQL、PolarDB-X、PostgreSQL、AnalyticDB MySQL、AnalyticDB PostgreSQL、Kafka |
PolarDB for MYSQL->PolarDB for MySQL、MySQL、AnalyticDB MySQL |
PolarDB-O->Oralce、PolarDB-O、Kafka |
Oracle->Oracle、MySQL、PPAS、PolarDB-O、PolarDB-X、AnalyticDB MySQL、AnalyticDB PostgreSQL、PolarDB MySQL、PolarDB PG 、PostgreSQL |
SQLServer->SQLServer |
PostgreSQL->PostgreSQL |
MariaDB->MariaDB、MySQL |
MongoDB->MongoDB |
Redis->Redis |
Tidb->MySQL、PolarDB MySQL |
Db2 for Luw->MySQL |
DB2 for I->MySQL |
数据同步功能 |
MySQL->MySQL、PolarDB for MySQL、AnalyticDB MySQL、AnalyticDB PostgreSQL、Kafka、Datahub、ElasticSearch、Maxcompute |
PolarDB-X->PolarDB-X、Datahub、AnalyticDB MySQL、AnalicDB PostreSQL |
PolarDB forMySQL->MySQL、PolarDB for MySQL、AnalyticDB MySQL、AnalyticDB PostgreSQL、Kafka、Datahub、ElasticSearch、Maxcompute |
PolarDB-O->PolarDB-O、Kafka |
PostgreSQL->AnalyticDB PostgreSQL |
SQLServer->AnalyticDB MySQL、AnalyticDB PostgreSQL |
Redis->Redis |
TIDB->AnalyticDB MySQL |
Db2 for I->MySQL |
详情请参考:
https://help.aliyun.com/document detail/131497.html?Spm=a2c4g.11186623.6.544.3ac125eWjqUIm#title-80f-ixi-vza
数据迁移和同步的区别:
1.数据迁移适用于一次性的短期迁移,如上云迁移。且只支持后付费,不支持预付费。
2,数据同步适用于长期的同步,如实时数据集成,异地容灾,异地多活,双向同步。
3.相比数据迁移,数据同步还额外支持通过内网同步,网络性能和稳定性更高。适合跨 Region 的同步。
4.数据同步任务,可以在同步过程中在线修改同步的对象,而数据迁移任务配置完成后,不可修改任务的迁移对象。
5,数据迁移,支持结构、全量和增量迁移,且只有配置任务时勾选了增量迁移才会收费。
而同步任务是用户购买并创建任务之后就会开始收费,如果是预付费实例则用户在购买完成后同步任务就会开始收费。因此,相对于短期的、一次性的迁移,数据迁移的成本会比数据同步低一些。
产品核心功能——数据实时订阅:
数据订阅支持实时拉取 RDS 实例的增量日志,用户可以通过DTS 提供的 SDK 数据订阅服务端或者 kafka client 来订阅增量日志,同时可以根据业务需求,实现数据定制化消费。
DTS 服务端的日志拉取模块主要实现从数据源抓取原始数据,通过解析、过滤、标准格式化等流程,最终将增量数据在本地持久化。
日志抓取模块通过数据库协议连接并实时拉取源实例的增量日志。例如源实例为 RDS for MySQL ,那么数据抓取模块通过 Binlog dump 协议连接源实例。
日志拉取模块及下游消费 SDK 的高可用: DTS 容灾系统一旦检测到日志拉取模块出现异常,就会在健康服务节点上断点重启日志拉取模块,保证日志拉取模块的高可用。
DTS 支持在服务端实现下游 SDK 消费进程和 client 的高可用。用户同时对一个数据订阅链路,启动多个下游 SDK 消费进程和消费 client ,服务端同时只向一个下游消费推送增量数据,当这个消费进程异常后,服务端会从其他健康下游中选择一个消费进程,向这个消费进程推送数据,从而实现下游消费的高可用。
数据订阅相比于迁移和同步,支持的场景会更加灵活,它主要的功能场景就是帮助用户将源端增量变化的数据实时的采集并写到一个消息队列中。用户可以通过 DTS 提供的 SDK 或 Kafka client 将源端采集的增量数据从 DTS 中消费出来,并自定义写入到各种各样的目标端,这种订阅和发布的方式相比于数据迁移和数据同步可以支持更多的目标端,支持的场景也更加丰富与灵活。
2.3 产品应用场景
场景1——业务零停机迁移、回流
通过 DTS 数据迁移和同步,可以帮助用户将源端数据库的数据实时迁移到目标端,保证两边数据的一致性,因此,此类场景可以帮助用户将本地 IDC 的数据迁移到阿里云或者从其他云厂商迁移到阿里云,甚至在阿里云上 ECS 自建数据库迁移到阿里云云数据库,或是跨账号数据库数据库迁移。数据迁移或数据同步任务也可以构建一条反向的迁移或同步任务,用户可将阿里云上的数据库的实例数据再反向同步回到 IDC 数据库或 ECS 自建数据库或其他云数据库上。如此一旦云数据库出现问题,用户的业务可以立马回切到源数据库实例上,通过数据迁移功能可以帮助用户将业务数据库零停机的上云迁移、回流。
场景说明:用户有需要迁移的数据库,希望在现有业务基本不停机的情况下,完成数据迁移,最大程度降低迁移对业务的影响
解决方案:使用增量数据迁移功能,同步迁移过程中业务产生的增量数据,当迁移无延迟时应用切换到目标数据源,应用停服时间降低到分钟级别
数据上云迁移
从本地 IDC 迁移到阿里云
从其他云厂商迁移到阿里云,例腾讯云 AWS 等
云间迁移
ESC 自建同云资源间迁移
跨云账号迁移
跨阿里云地域迁移
跨 BID 迁移,例如从阿里云迁移到聚石塔
场景2——数据灾备
通过 DTS 实时同步的功能,在两个数据中心构建 DTS 的传输通道,可以帮助用户将源端数据库的数据实时同步到异地的数据中心,比如将 IDC 的自建数据库同步到阿里云数据中心,或者在阿里云数据中心把数据库从杭州灾备到北京,又或者帮助用户构建两地三中心的灾备方案,例如 RDS 同城双可用区进行灾备 DTS ,再同步一份数据到线下 IDC 搭建两地三中心的灾备架构。
场景说明:用户在某地区部署业务中心,希望这个地区发生故障时,业务不受影响,可继续提供服务
解决方案:通过数据同步功能,在异地构建灾备中心,当业务中心发生故障时,业务快速切换到灾备中心,降低故障对业务的影响
数据灾备 RPO 秒级的数据灾备方案:
混合云灾备
业务中心在本地 IDC 或其他云厂商,在
阿里云构建灾备中心
业务中心在阿里云,在本地 IDC 或其他
云厂商构建灾备中心
阿里云跨地域灾备
两地三中心
RDS 同城双可用区+ DTS 跨 IDC 灾备
场景3——异地多活
相比数据库容灾, DTS 数据多活能够提供更加强大的功能,异地容灾只有在当前数据中心的数据库发生故障时才会切到灾备中心,但异地多活可以帮助用户构建两个双活的数据中心,这两个数据中心可以同时提供数据库的读写请求服务,比如一部分用户在北京、一部分用户在杭州,那北方的用户可以将请求请求到北京的数据库,南方的用户则可以将数据库的请求全球到杭州的数据库,但底层的数据可以通过 DTS 将北京的数据同步到杭州,将杭州的数据同步到北京,保证两边的数据保持实时的一致,同时两个数据中心的数据库又可以同时对外提供服务,这样相比灾备中心有更强大的服务能力。
场景说明:业务上在多地有多套服务,这些服务同时承担业务流量,且服务之间互为备份
解决方案:通过双向同步功能,进行各业务中心的数据同步,实现数据全局一致。当某个节点出现异常时,业务秒级切换到其他节点。
异地多活 RPO 秒级的数据多活方案:
混合云灰度切流
流量逐步切换到阿里云,在切换过程中阿里云及线下 IDC /其他云厂商均承担业务流量
就近访问
业务需要在多个区域或多个国家提供服务,为提升访问体验,在多地部署业务
场景4——业务数据实时分析
通过DTS将源端数据库的数据比如 MySQL、SQLServer、Oracle等多种多样的数据实时同步到 AnalyticDB MySQL 、 Maxcompute 等数商平台用于数据实时分析,构建实时的数据仓库,。当然也可以将源端的数据库通过 DTS 数据订阅功能订阅到 DTS ,用户再将数据从 DTS 订阅通道将数据消费出来,写入到计算引擎进行实时数据计算。
场景说明:用户需要实时或定期对线上业务数据进行数据分析,以实现营销决策,业务大屏,实时查询等业务场景
解决方案:使用数据同步功能,将线上业务变更数据准实时同步到大数据分析产品中,业务实现准实时数据分析,快速抢占商务先机
业务数据实时分析:
实时分析
业务更新数据需要同步到 AnalyticDB/Maxcompute 中,跟其他数据进行实时交叉查询分析
流式分析
需要借助流计算对线上业务更新数据进行流式分析
场景5——数据订阅,业务异步解耦
比如上游有一个数据订单的系统, DTS 通过数据订阅功能将上游订单系统的数据库数据实时订阅,一旦上游系统有一比新增的订单记录就可以让下游的话费充值系统消费到这条数据,并对该订单进行话费充值,进而实现两个业务系统之间的解耦。
场景说明:对于存在依赖关系的上下游业务,希望不影响上游稳定性的情况下,低成本得实现下游业务通知机制
解决方案:使用数据订阅功能,实时获取上游业务的数据库更新数据,触发下游业务逻辑