一、适用场景
本方案适用于将数据从它云对象存储 迁移至 阿里云 OSS 的场景,涵盖企业级数据迁移、云原生架构改造及混合云部署等需求。
1.1 适用云厂商产品
云厂商 | 对象存储 |
AWS | S3 |
腾讯云 | COS |
华为云 | OBS |
Azure | Blob |
谷歌云 GCP | Cloud Storage |
1.2 适用迁移类型
全量数据迁移:适用于首次迁移或数据规模较小的场景,需一次性完成所有数据的迁移。
增量数据迁移:适用于持续数据更新的场景,通过实时同步技术保障数据一致性。
1.3 适用存储类型
标准存储:适用于高频访问的业务数据。
低频访问存储:适用于周期性访问的数据,成本较低。
归档存储:适用于长期冷数据存储,支持按需恢复。
二、迁移相关工具介绍
1、阿里云在线迁移服务
阿里云在线迁移服务是阿里云提供的存储产品数据通道。使用在线迁移服务,您可以将第三方数据轻松迁移至阿里云对象存储 OSS,也可以在对象存储 OSS 之间进行灵活的数据迁移。
使用在线迁移服务,您只需在控制台填写源数据地址和目的OSS地址信息,并创建迁移任务即可。启动迁移后,您可以通过控制台管理迁移任务,查看迁移进度、流量等信息。
2、阿里云 CMH 云迁移中心
数据迁移是一个非常常见的场景,而数据的准确性将会直接影响业务,所以数据迁移前后是否能保持一致就显得尤为关键。CMH为用户提供了针对多种数据源(数据库类型/对象存储类型)的多种校验方式,以确保源端与目标端数据的一致性。本文介绍数据校验功能的使用流程,帮助您快速掌握如何使用数据校验的功能。
三、迁移方案
1、迁移整体流程
存储创建:
在阿里云OSS上创建存储桶。
选择地域:
考虑因素:延迟(就近用户)、合规性(如数据驻留要求)、成本(不同地域价格差异)。
命名规则:使用唯一且符合规范的名称(如
<业务名>-<环境>-<时间戳>
)。
存储类型选择:
存储类别:
标准存储:高频访问数据。
低频访问存储(Infrequent Access):冷数据,成本更低。
归档存储(Archive):极低频数据,成本最低。
版本控制:启用版本控制以防止数据覆盖或删除。
跨区域复制(可选):配置跨区域同步(如主桶在华东2,备桶在华北3)。
存储桶策略(Bucket Policy):
配置权限策略,限制访问(如允许特定IP或RAM用户访问)。
生命周期迁移:
自动化管理数据存储类别转换和过期删除。
规划策略:
根据数据访问频率,定义规则(如7天后转为低频存储,30天后转归档)。
删除策略:例如保留数据180天后删除。
创建生命周期规则:
在OSS控制台或API中配置规则,支持多规则叠加。
示例规则:
规则1:对象创建后7天,转为低频存储。
规则2:对象创建后180天,删除。
验证与监控:
使用OSS日志服务(Log Service)监控规则执行状态。
定期检查存储桶内文件存储类型是否符合预期。
安全策略迁移:
确保迁移后OSS的权限和安全策略与原系统一致。
权限迁移:
RAM角色与策略:导出原系统RAM权限策略,导入阿里云并绑定到对应用户或角色。
Bucket Policy:导出原存储桶策略,适配OSS语法后重新配置。
ACL迁移:若原系统使用ACL(访问控制列表),需转换为Bucket Policy或RAM策略。
加密迁移:
若原数据已加密,使用OSS的KMS密钥管理服务(KMS)进行密钥迁移或重新加密。
数据迁移:
使用阿里云在线迁移服务,进行数据迁移。
数据校验:
使用阿里云 CMH 云迁移中心,进行数据校验。
2、数据迁移方案
2.1、使用阿里云在线迁移服务进行数据迁移
前置条件:
当您源端为归档类型的数据,迁移前需要您提前进行解冻操作,待解冻完成后再创建迁移任务,解冻时请注意如下事项:
请您务必完成解冻操作后再创建源数据地址和迁移任务。
请您根据待迁移的数据总量确保解冻时长,以防迁移期间数据再次变成冻结状态。
解冻操作会收取数据取回的费用,部分解冻服务收费较高。具体计费规则可咨询您的源端存储服务提供商。
注意事项:
在线迁移服务使用源站存储服务提供商公开的标准接口来访问源数据,其行为依赖于源站存储服务提供商的具体实现。
在线迁移会占用源地址和目的地址的资源,可能会影响业务正常运行。若您的业务比较重要,请提前做好评估后对迁移任务设置限速,或在空闲时间启动迁移任务。
在线迁移前会检查源地址和目的地址的文件,但是若您源和目的地址有相同文件名的文件,且在迁移任务中配置了覆盖方式为覆盖,迁移时会直接覆盖目的地址的文件。若两个文件内容不同,必须更改文件名或做好备份。
在线迁移会保留源文件的最后修改时间属性,如果目的Bucket设置了生命周期规则,且迁移后文件处于该生命周期规则生效的时间范围内,则该文件可能会在规则生效时被删除或转为指定的归档类型。
使用限制:
目前仅支持单次迁移单个Bucket数据,无法将整个账号的数据一次性迁移。
AWS S3 迁移数据的属性说明如下:
支持迁移的属性:x-amz-meta-*、LastModifyTime ,Content-Type,Cache-Control,Content-Encoding,Content-Disposition,Content-Language ,Expires。
不支持迁移的属性(包括但不限于):StorageClass、Acl、服务端加密、标签Tagging等。
腾讯云COS迁移数据的属性说明如下:
支持迁移的属性:x-cos-meta-*、LastModifyTime ,Content-Type,Cache-Control,Content-Encoding,Content-Disposition、Content-Language 、Expires。
不支持迁移的属性(包括但不限于):StorageClass、Acl、服务端加密、标签Tagging等。
华为云OBS迁移数据的属性说明如下:
支持迁移的属性:x-obs-meta-*,LastModifyTime ,Content-Type,Cache-Control,Content-Encoding,Content-Language ,Expires。
不支持迁移的属性(包括但不限于):StorageClass,Content-Disposition,ACL,服务端加密、标签Tagging等。
不支持华为 OBS 并行文件系统。
Azure Blob 迁移数据的属性说明如下:
支持迁移的属性:x-ms-meta-*,LastModifyTime ,Content-Type,Cache-Control,Content-Encoding,Content-Disposition,Content-Language ,Expires。
不支持迁移的属性(包括但不限于):StorageClass,ACL,服务端加密,标签Tagging等。
谷歌云GCP迁移数据的属性说明如下:
支持迁移的属性:x-amz-meta-*,LastModifyTime ,Content-Type,Cache-Control,Content-Encoding,Content-Disposition,Content-Language 。
不支持迁移的属性(包括但不限于):Expires,StorageClass,ACL,服务端加密,标签Tagging等。
3、数据校验方案
3.1、使用阿里云迁移中心 CMH 进行数据校验
校验原理:
CMH通过轻量化的数据校验算法,在保证验证精度的同时也降低了资源消耗,为关键业务系统的数据迁移提供可靠的质量保障,助力企业实现平滑、安全的数据迁移。
云厂商 | ListObject | ContentCheck | Inventory |
阿里云-OSS | 对bucket下面所有的object的名字和size(单位为byte)进行比较 | 根据在线迁移服务生成的报告,对其中每个object进行MD5校验。 | 通过生成的Inventory清单进行比较,不一致的object会通过getObject进行二次校验。 |
华为云-OBS | 对bucket下面所有的object的名字和size(单位为byte)进行比较 | 根据在线迁移服务生成的报告,对其中每个object进行MD5校验。 | 通过生成的Inventory清单进行比较,不一致的object会通过getObject进行二次校验。 |
AWS-S3 | 对bucket下面所有的object的名字和size(单位为byte)进行比较 | 暂不支持 | 通过生成的Inventory清单进行比较,不一致的object会通过getObject进行二次校验。 |
腾讯云-COS | 对bucket下面所有的object的名字和size(单位为byte)进行比较 | 根据在线迁移服务生成的报告,对其中每个object进行MD5校验。 | 通过生成的Inventory清单进行比较,不一致的object会通过getObject进行二次校验。 |
注意事项:
在数据迁移仍处于进行状态时(包括但不限于全量迁移、增量同步等阶段),由于源端与目标端数据可能持续发生变化,此时执行验证操作可能导致:
验证结果偏差
数据一致性误判
迁移进程干扰
四、数据迁移过程
1、使用阿里云在线迁移服务进行数据迁移
数据迁移大致分为以下几个步骤,具体需要以在线迁移服务中的操作步骤为准。
第一步:创建源地址
第二步:创建目标地址
第三步:创建迁移任务
第四步:执行频率修改
具体操作步骤及参数见:
五、数据校验过程
1、使用阿里云迁移中心 CMH 进行数据校验
数据校验功能的使用流程大致分为以下几个步骤:
第一步:安装agent。
在数据校验时,需要探查到源端和目标端的数据进行比较,考虑到数据的敏感性,CMH的数据校验需要客户提供一台服务器(建议是阿里云ECS),确保该服务器与源端和目标端数据源是联通的,之后在改服务器上安装一个数据校验的agent,用于进行后续的校验。
第二步:配置数据源及验证计划。
在实际的场景中,往往用户并不是想校验某个数据源下所有的数据,所以需要用户自定义校验的范围以及校验的方式。完成之后选择合适的agent进行校验。
第三步:发起校验。
将验证任务置完成之后,用户可以在页面上向该任务对应的agent发起校验的指令,agent校验完成之后会自动上报验证结果,用户无需其他操作,等待验证完成即可。
第四步:
查看结果。agent将结果返回之后,用户在CMH控制台可以看到验证的结果及详情。
通过上述步骤,能够白屏化的对源端和目标端之间的数据进行一致性校验,确保数据的一致性,保障割接的顺利完成。
具体操作步骤及参数详见:数据校验
六、整体迁移注意事项
增量同步延迟问题:当 bucket 文件数较多(几千万以上)时,增量同步扫描一次时间会很长,需要避免在割接时再追增量。此时需要增量要采用其他增量不同方案,例如:
增量同步可以考虑事件驱动方式,订阅源端变更动作,实时同步到目的端。
对于增量同步时,因延迟导致无法实时获取到数据的情况,考虑配置镜像回源做兜底。
SDK适配问题:对象存储迁移,根据源端云不同,可能会涉及到重新适配 SDK,不能保证完全平滑七迁移。例如:七牛云、或者其他商业化对象存储迁移到阿里云时存在此种问题。
业务在使用对象存储时,是否存在把存储对象的访问地址直接存到 DB、或者代码中存在写死对象存储访问地址的情况,这种情况下数据库的链接地址订正或代码层适配新的地址。