云数据迁移(Cloud Data Migration,CDM)
作者:互联网
云数据迁移(Cloud Data Migration,CDM)
云数据迁移(Cloud Data Migration,CDM)提供同构/异构数据源之间批量数据迁移服务,帮助客户实现数据自由流动。支持客户自建和公有云上的文件系统,关系数据库,数据仓库,NoSQL,大数据云服务,对象存储等数据源。
CDM服务基于分布式计算框架,利用并行化处理技术,支持用户稳定高效地对海量数据进行移动,实现不停服数据迁移,快速构建所需的数据架构。
图1 CDM定位
产品功能
- 表/文件/整库迁移
支持批量迁移表或者文件,还支持同构/异构数据库之间整库迁移,一个作业即可迁移几百张表。
- 增量数据迁移
支持文件增量迁移、关系型数据库增量迁移、HBase/CloudTable增量迁移,以及使用Where条件配合时间变量函数实现增量数据迁移。
- 事务模式迁移
支持当CDM作业执行失败时,将数据回滚到作业开始之前的状态,自动清理目的表中的数据。
- 字段转换
支持去隐私、字符串操作、日期操作等常用字段的数据转换功能。
- 文件加密
在迁移文件到文件系统时,CDM支持对写入云端的文件进行加密。
- MD5校验一致性
支持使用MD5校验,检查端到端文件的一致性,并输出校验结果。
- 脏数据归档
支持将迁移过程中处理失败的、被清洗过滤掉的、不符合字段转换或者不符合清洗规则的数据单独归档到脏数据日志中,便于用户查看。并支持设置脏数据比例阈值,来决定任务是否成功。
产品优势
用户在云上进行数据集成、数据备份、新应用开发时,经常会涉及到数据迁移。通常情况下用户要进行数据迁移,会开发一些数据迁移脚本,从源端读取数据再写入目的端,相对这样传统的做法,CDM的优势如 表1 所示。
优势项 | 用户自行开发 | CDM |
---|---|---|
易使用 | 自行准备服务器资源,安装配置必要的软件并进行配置,等待时间长。 程序在读写两端会根据数据源类型,使用不同的访问接口,一般是数据源提供的对外接口,例如JDBC、原生API等,因此在开发脚本时需要依赖大量的库、SDK等,开发管理成本较高。 | CDM提供了Web化的管理控制台,通过Web页实时开通服务。 用户只需要通过可视化界面对数据源和迁移任务进行配置,服务会对数据源和任务进行全面的管理和维护,用户只需关注数据迁移的具体逻辑,而不用关心环境等问题,极大降低了开发维护成本。 CDM还提供了REST API,支持第三方系统调用和集成。 |
实时监控 | 需要自行选型开发。 | 您可以使用云监控服务监控您的CDM集群,执行自动实时监控、告警和通知操作,帮助您更好地了解CDM集群的各项性能指标。 |
免运维 | 需要自行开发完善运维功能,自行保证系统可用性,尤其是告警及通知功能,否则只能人工值守。 | 使用CDM服务,用户不需要维护服务器、虚拟机等资源。CDM的日志,监控和告警功能,有异常可以及时通知相关人员,避免7*24小时人工值守。 |
高效率 | 在迁移过程中,数据读写过程都是由一个单一任务完成的,受限于资源,整体性能较低,对于海量数据场景往往不能满足要求。 | CDM任务基于分布式计算框架,自动将任务切分为独立的子任务并行执行,能够极大提高数据迁移的效率。针对Hive、HBase、MySQL、DWS(数据仓库服务)数据源,使用高效的数据导入接口导入数据。 |
多种数据源支持 | 数据源类型繁杂,针对不同数据源开发不同的任务,脚本数量成千上万。 | 支持数据库、Hadoop、NoSQL、数据仓库、文件等多种类型的数据源,具体数据类型请参见 CDM支持的数据源 。 |
多种网络环境支持 | 随着云计算技术的发展,用户数据可能存在于各种环境中,例如公有云、自建/托管IDC、混合场景等。在异构环境中进行数据迁移需要考虑网络连通性等因素,给开发和维护都带来较大难度。 | 无论数据是在用户本地自建的IDC中(Internet Data Center,互联网数据中心)、云服务中、第三方云中,或者使用ECS自建的数据库或文件系统中,CDM均可帮助用户轻松应对各种数据迁移场景,包括数据上云,云上数据交换,以及云上数据回流本地业务系统。 |
CDM支持的数据源
CDM有两种迁移方式,支持的数据源不相同:
- 表/文件迁移: 适用于数据上云、云服务间数据交换、云上数据回流到本地业务系统。 请参见 表/文件迁移支持的数据类型 。
- 整库迁移:适用于数据库上云,请参见 整库迁移支持的数据类型 。
表/文件迁移支持的数据类型
表/文件迁移时支持的数据源如 表1 所示。
数据源分类 | 数据源 | 作为源端 | 作为目的端 |
---|---|---|---|
数据仓库 | 数据仓库服务(DWS) | 支持 | 支持 |
数据湖探索(DLI) | 不支持 | 支持 | |
FusionInsight LibrA | 支持 | 支持 | |
Hadoop | MRS HDFS | 支持 | 支持 |
MRS HBase | 支持 | 支持 | |
MRS Hive | 支持 | 支持 | |
FusionInsight HDFS | 支持 | 支持 | |
Apache HDFS | 支持 | 支持 | |
Hadoop HBase | 支持 | 支持 | |
FusionInsight HBase | 支持 | 支持 | |
对象存储 | 对象存储服务(OBS) | 支持 | 支持 |
阿里云对象存储(OSS) | 支持 | 不支持 | |
七牛云对象存储(KODO) | 支持 | 不支持 | |
亚马逊对象存储S3 | 支持 | 不支持 | |
文件系统 | FTP | 支持 | 支持 |
SFTP | 支持 | 支持 | |
HTTP | 支持 | 不支持 | |
网络附加存储(NAS) | 支持 | 支持 | |
弹性文件服务(SFS Turbo) | 支持 | 支持 | |
关系数据库 | 云数据库 MySQL | 支持 | 支持 |
云数据库 PostgreSQL | 支持 | 支持 | |
云数据库 SQL Server | 支持 | 支持 | |
分布式数据库中间件(DDM) | 支持 | 支持 | |
MySQL | 支持 | 支持 | |
PostgreSQL | 支持 | 不支持 | |
Microsoft SQL Server | 支持 | 不支持 | |
Oracle | 支持 | 不支持 | |
IBM Db2 | 支持 | 不支持 | |
Derecho(GaussDB) | 支持 | 不支持 | |
NoSQL | 分布式缓存服务(DCS) | 不支持 | 支持 |
文档数据库服务(DDS) | 支持 | 支持 | |
表格存储服务(CloudTable) | 支持 | 支持 | |
OpenTSDB | 支持 | 支持 | |
Redis | 支持 | 不支持 | |
MongoDB | 支持 | 不支持 | |
搜索 | 云搜索服务(CSS) | 支持 | 支持 |
Elasticsearch | 支持 | 支持 | |
消息系统 | 数据接入服务(DIS) | 支持 | 支持 |
Apache Kafka | 支持 | 支持 | |
DMS Kafka | 支持 | 支持 |
说明:
- 上表中非云服务的数据源,例如MySQL,既可以支持用户本地数据中心自建的MySQL,也可以是用户在ECS上自建的MySQL,还可以是第三方云的MySQL服务。
- 消息系统(DIS/Apache Kafka/DMS Kafka)作为源端时,CDM仅支持迁移到以下类型的数据源:
- 云搜索服务(CSS)
- 数据接入服务(DIS)
- Apache Kafka
- DMS Kafka
整库迁移支持的数据类型
整库迁移适用于将本地数据中心或在ECS上自建的数据库,同步到云上的数据库服务或大数据服务中,适用于数据库离线迁移场景,不适用于在线实时迁移。 CDM支持整库迁移的数据源如 图1 所示。
图1 CDM支持整库迁移的数据源
应用场景
本地数据迁移上云
本地数据是指存储在用户自建或者租用的IDC中的数据,或者第三方云环境中的数据,包括关系型数据库、NoSQL数据库、OLAP数据库、文件系统等。
这个场景是用户希望利用云上的计算和存储资源,需要先将本地数据迁移上云。该场景下,需要保证本地网络与云上网络是连通的。
图1 本地数据迁移到公有云
云上服务之间数据迁移
这个场景是面向数据已经存储在云上的用户,支持用户完成以下云服务之间的数据交换:
- 对象存储服务(Object Storage Service,简称OBS)
- 关系型数据库服务(Relational Database Service,简称RDS)
- MapReduce服务(MapReduce Service,简称MRS)
- 数据仓库服务(Data Warehouse Service,简称DWS)
- 文档数据库服务(Document Database Service,简称DDS)
- 分布式缓存服务(Distributed Cache Service,简称DCS)
- 云搜索服务(Cloud Search Service,简称CSS)
- 数据接入服务(Data Ingestion Service,简称DIS)
- 表格存储服务(CloudTable Service,简称CloudTable)
- 数据湖探索服务(Data Lake Insight,简称DLI)
- 分布式数据库中间件(Distributed Database Middleware,简称DDM)
- 弹性文件服务(Scalable File Service,简称SFS)
- 在弹性云服务器上部署的各种数据库或文件系统。
云上数据迁移到本地环境
本地环境是指用户自建或者租用的IDC(Internet Data Center,互联网数据中心)中的数据存储系统,或者第三方云环境中的数据存储系统,包括关系型数据库以及文件系统。
这个场景是用户在使用云上计算资源对海量数据进行处理后,将结果数据回流到本地业务系统,主要是各种关系型数据库和文件系统。该场景下,需要保证本地环境的网络与云上网络是连通的。
图2 云端数据迁移到本地
CDM迁移原理
CDM迁移原理
用户使用CDM服务时,CDM管理系统在用户VPC中发放全托管的CDM实例。此实例仅提供控制台和Rest API访问权限,用户无法通过其他接口(如SSH)访问实例。这种方式保证了CDM用户间的隔离,避免数据泄漏,同时保证VPC内不同华为云服务间数据迁移时的传输安全。用户还可以使用***网络将本地数据中心的数据迁移到华为云服务,具有高度的安全性。
CDM数据迁移以抽取-写入模式进行。CDM首先从源端抽取数据然后将数据写入到目的端,数据访问操作均由CDM主动发起,对于数据源(如RDS数据源)支持SSL时,会使用SSL加密传输。迁移过程要求用户提供源端和目的端数据源的用户名和密码,这些信息将存储在CDM实例的数据库中。保护这些信息对于CDM安全至关重要。
图1 CDM迁移原理
安全边界和风险规避
图2 风险规避
如 图2 所示,CDM可能存在以下威胁:
- 互联网威胁:恶意用户可能通过CDM控制台***CDM。
- 数据中心威胁:恶意CDM管理员获取用户的数据源访问信息(用户名和密码)。
- 恶意用户威胁:恶意用户窃取其他用户的数据。
- 数据暴露公网:从公网迁移数据时暴漏数据的威胁。
对于这些潜在的威胁,CDM提供以下机制来规避终端用户的风险:
- 针对互联网威胁:用户不能直接通过公网登录CDM控制台。CDM提供双层安全保障机制。
- 华为云控制台框架要求用户访问任何控制台页面都要进行用户认证。
- Web应用防火墙(Web Application Firewall,简称WAF)过滤所有控制台的请求内容并停止请求***代码/内容。
- 针对数据中心威胁:用户必须向CDM系统提供迁移源端和目的端的访问用户名和密码信息,才能完成数据迁移。避免CDM管理员获取此类信息并***用户的重要数据源对于CDM非常重要,CDM为此类信息提供三级保护机制。
- CDM在本地数据库中存储经过AES-256加密的密码,确保用户隔离。本地数据库使用用户Ruby运行,数据库仅侦听127.0.0.1,用户没有远程访问数据库的权限。
- 用户实例发放完毕后,CDM将虚拟机的root和Ruby用户密码更改为随机密码且不会保存在任何地方,以阻止CDM管理员访问用户实例和含有密码信息的数据库。
- CDM实例迁移以推拉模式进行,因此CDM实例在VPC上没有侦听端口,用户无法从VPC访问本地数据库或操作系统。
- 针对恶意用户的威胁:CDM对每个用户,使用单独的虚拟机来运行各自的CDM实例,用户之间的实例是完全隔离和安全的。恶意用户无法访问其他用户的实例。
- 针对数据暴漏公网的威胁:CDM的抽取-写入模型下,即使CDM绑定了弹性IP,也不会开放端口到弹性IP,***者无法通过弹性IP来访问和***CDM。不过从公网迁移数据的方式下,由于用户数据源也会暴漏在公网,存在被第三方***的威胁,推荐用户在数据源服务器上通过ACL或防火墙对源端进行防护,例如仅放通来自CDM绑定的弹性IP的访问请求。
标签:数据,CDM,用户,支持,Migration,数据源,迁移,Data 来源: https://blog.51cto.com/lhrbest/2706552