更新时间:2024-10-30 GMT+08:00

DCS数据迁移概述

DCS控制台界面支持的数据迁移方式有在线迁移和离线迁移(备份文件导入)两种方式,其中,在线迁移支持增量数据迁移。

  • 在线迁移,涉及到SYNC/PSYNC命令,适用于源Redis放通了SYNC/PSYNC命令的场景。支持将源Redis中的数据全量迁移或增量迁移到目标Redis中。

    进行在线迁移时,迁移执行机会向源端地址发送PSYNC命令,其原理可参考Replication介绍,该命令会引起源端执行fork系统调用,对时延产生影响,其影响范围可参考Redis官网

  • 离线迁移,适用于源Redis和目标Redis网络不连通、源Redis不支持SYNC/PSYNC命令的场景。需要将数据备份文件导入到OBS,DCS从OBS桶中读取数据,将数据迁移到华为云Redis中;或直接将备份文件导入到DCS实例中。

由于用户对Redis的使用环境和场景各有差异,具体的迁移方案需要用户根据实际需求完善与细化。迁移耗时也与数据量大小、源Redis部署出处、网络带宽等相关,具体耗时需要在演练过程中记录与评估。

在迁移实例前需要分析业务系统使用到的缓存相关命令(附:DCS命令兼容性说明参考),在演练阶段对命令逐一验证。如有需要,可联系技术支持人员。

  • 当前数据迁移功能为公测免费,开始收费时间会另行通知。
  • 数据迁移是一项重要且严肃的工作,准确性与时效性要求非常高,且与具体业务和操作环境相关。
  • 本文提供的案例仅供参考,实际迁移应考虑具体的业务场景和需求,请勿直接套用。
  • 本文提供的迁移操作,部分命令中包含了实例密码,这会导致密码记录到操作系统中,请注意保护密码不被泄露,并及时清除历史操作记录。
  • DCS Redis 3.0已下线,暂停售卖,建议使用Redis 4.0及以上版本。

DCS支持的迁移能力

  • DCS Redis:指的是华为云分布式缓存服务的Redis。
  • 自建Redis:指的是在云上、其他云厂商、本地数据中心自行搭建Redis。
  • √表示支持,×表示不支持。
  • 源端为其他云厂商Redis时,只有在满足和目标DCS Redis的网络相通、源Redis已放通SYNC和PSYNC命令这两个前提下,才可以使用在线迁移的方式,将源Redis中的数据全量迁移或增量迁移到目标Redis中,但其他云厂商的部分实例可能存在无法在线迁移的问题,可以采用离线或其它迁移方案,具体请参考迁移方案概览
表1 DCS支持的迁移能力

迁移类型

源端

目标端:DCS服务

单机/主备/读写分离

Proxy集群

Cluster集群

备份文件导入

AOF文件

RDB文件

在线迁移

DCS Redis:单机/主备/读写分离

DCS Redis:Proxy集群

DCS Redis:Cluster集群

自建Redis

其他云厂商Redis

迁移流程

图1 迁移流程示意图
  1. 迁移评估。
    获取当前待迁移的缓存数据信息(可参考表2记录以下信息),包括:
    • 实例数量
    • 各实例配置的数据库数量
    • 各数据库的key数量
    • 业务用到的数据库
    • 各实例数据占用空间
    • Redis版本
    • Redis实例类型
    • 业务与各实例的连接关系
    • 连接待迁移Redis后,执行info keyspace命令可以查看数据分布情况,确认有数据的数据库编号以及数据库中的key数量。记录各数据库存储的key的数量可供迁移验证对比。
    • 连接待迁移Redis后,执行info memory命令,参考“used_memory_human”的返回值可以查看源Redis数据占用空间。请确认用于中转的ECS可用磁盘空间和目标实例规格与剩余可用内存是否足够(不小于源Redis数据大小)。
    根据获取到的信息规划DCS目标缓存实例,包括:
    • 申请缓存实例数量
    • 缓存实例的内存规格(不小于源Redis内存规格)
    • 缓存实例的版本(不低于源Redis版本)
    • 缓存实例类型
    • 缓存实例与业务所属网络规划(VPC/子网/安全组)
  2. 迁移准备。
    当完成迁移评估后,需要准备以下内容:
    1. 移动存储介质

      用于在网络不通(自建数据中心场景)的情况下以复制方式传输数据。

    2. 网络资源

      按照业务规划创建虚拟私有云与子网。

    3. 服务器资源

      申请弹性云服务器,承载Redis客户端。用于导出或导入缓存数据。

      弹性云服务器的规格建议不低于8C16G。

    4. DCS缓存实例

      按照迁移规划申请缓存实例,如果实例数量超过用户默认配额,请联系技术支持。

    5. 相关工具安装

      包括SSH工具、FTP工具等。

    6. 信息收集

      信息收集包括参与人员联系方式,弹性云服务器登录信息,缓存实例信息与数据库信息等。

    7. 整体迁移方案

      制定总体迁移计划,包括人员安排、演练方案、迁移方案、验证方案、业务切换方案、回退方案。

      每一份方案需要有细化到可执行的操作步骤,以及可标记任务结束的里程碑。

  3. 迁移演练。
    迁移演练的主要目的如下:
    1. 验证迁移工具与过程的可行性。
    2. 发掘迁移过程中遇到的问题,并做出有效的改进。
    3. 评估迁移耗时。
    4. 优化迁移步骤,验证部分工作并行的可行性,提高迁移效率。
  4. 备份。

    在迁移前,需要先行备份,包括但不限于缓存数据、Redis配置文件,用于应急。

  5. 迁移。

    在完成一到两轮的迁移演练,并根据演练过程中发现的问题进行优化后,正式开始数据迁移。

    迁移过程应该细化到每一步可执行的步骤,有明确的开始与结束确认动作。

  6. 数据验证。
    数据验证可以包括以下几方面:
    • 各数据库的key分布是否与原来或者迁移预期一致。
    • 关键Key的检查。
    • Key的过期时间检查。
    • 实例是否能够正常备份和恢复。
  7. 业务切换。
    1. 当缓存数据完成迁移,且验证无误后,业务可以正式切换缓存数据的连接,恢复对外。
    2. 如果涉及到缓存数据库编号的变化,业务还需修改编号的选择配置。
    3. 如果业务整体由数据中心或其他云厂商迁移到华为云,业务和缓存数据的迁移可并行。
  8. 业务验证。
    1. 业务应用与DCS缓存实例的连通。
    2. 通过业务操作对缓存数据的增删改查。
    3. 如果条件满足,进行压测,确认性能满足业务峰值压力。
  9. 回退。

    当遇到演练中没有及时发现的问题,导致数据迁移后无法供业务使用,且短期无法解决,则涉及到业务回退。

    由于源Redis数据仍然存在,因此只需业务完成回退,重新接入源Redis实例即可。

    在完成回退后,可继续从演练甚至准备阶段重新开始,解决问题。

迁移信息收集表

评估和准备阶段收集的信息填写参考下表:

表2 迁移信息收集

迁移源

信息项

说明

源Redis

(列出所有待迁移的实例)

源Redis实例的IP地址

-

Redis访问密码(如有)

-

总数据量大小

执行info memory命令,参考used_memory_human的值得到总数据量大小。

用于评估迁移方案、DCS缓存实例规格、ECS可用磁盘空间等是否满足,以及预估迁移耗时(业务中断时间)。

不为空的数据库编号

info keyspace命令查询得到。

用于确认迁移是否涉及多数据库,非AOF文件方式迁移,部分开源工具可能须逐库处理导出和导入。

DCS缓存实例中,单机和主备实例支持0-255共256个数据库,集群默认只提供一个数据库。

各数据库的key数量

用于迁移后进行数据完整性验证。

数据类型

CDM迁移服务当前支持Hash和String两种数据格式,如果源数据含有list、set之类数据,请采用第三方迁移工具。

华为云ECS(弹性云服务器)

如果待迁移实例较多,可准备多台ECS并行迁移

弹性IP地址

选择与DCS缓存实例网络互通的弹性云服务器进行数据导入,确保导入过程网络稳定。

带宽建议选取高配,提升数据传输效率。

系统登录用户/密码

-

CPU/内存

部分迁移工具支持多线程并行导入,使用高规格ECS,能提升导入速度。

可用磁盘空间

ECS需要预留足够的可用磁盘空间,存储压缩文件以及解压后的缓存数据文件。

注:为提高数据传输效率,对于较大的数据文件,建议压缩后再传输到弹性云服务器。

DCS缓存实例

(根据源Redis实例数与数据量情况选择合适的规格与实例数)

实例连接地址

-

实例连接端口

-

实例访问密码

-

实例类型

-

实例规格/可用内存

-

网络配置

VPC

提前规划VPC,确保应用服务、DCS缓存实例等处于相同VPC中。

子网

-

安全组或白名单

由于Redis 3.0和Redis 4.0/5.0/6.0实例部署模式不一样,控制访问方式也不一样,需要制定相应的安全组或白名单规则,确保网络连通。具体请根据目标Redis实例参考配置安全组或者配置白名单

...

...

其他配置信息