迁移流程示意图
评估
获取当前待迁移的缓存数据信息(可参考缓存数据信息记录以下信息),包括:
- 实例数量
- 各实例配置的数据库数量
- 各数据库的key数量
- 业务用到的数据库
- 各实例数据占用空间
- Redis版本
- Redis实例配置(单机/主备/集群)
- 业务与各实例的连接关系
根据获取到的信息规划DCS缓存实例,包括:
- 申请缓存实例数量
- 各缓存实例的规格、类型(单机/主备/集群)
- 缓存实例与业务所属网络规划(VPC/子网/安全组)
说明redis-cli -h ${redis_address} -p ${port}
- 查看数据分布情况,确认有数据的数据库编号以及各自的key数量。
info keyspace
查看各DB存储的key数量,并记录下来,供迁移验证对比。
- 查看数据占用空间,确认用于中转的ECS可用磁盘空间是否足够,实例规格与剩余可用内存是否足够。
info memory
参考used_memory_human的值。
准备
当完成迁移评估后,需要准备以下内容:
- 移动存储介质
用于在网络不通(自建数据中心场景)的情况下以复制方式传输数据。
- 网络资源
按照业务规划创建虚拟私有云与子网。
- 服务器资源
申请弹性云主机,承载Redis客户端。用于导出或导入缓存数据。
弹性云主机的规格建议不低于8C16G。
- DCS缓存实例
按照迁移规划申请缓存实例,如果实例数量超过用户默认配额,请联系技术支持。
- 相关工具安装
包括FTP工具、Redis迁移工具等。
- 信息收集
信息收集包括参与人员联系方式,服务器地址、登录信息,缓存实例信息与数据库信息等。
- 整体迁移方案
制定总体迁移计划,包括人员安排、演练方案、迁移方案、验证方案、业务切换方案、回退方案。
每一份方案需要有细化到可执行的操作步骤,以及可标记任务结束的里程碑。
演练
演练的目的主要有以下:
- 验证迁移工具与过程的可行。
- 发掘迁移过程中遇到的问题,并作出有效的改进。
- 评估迁移耗时。
- 优化迁移步骤,验证部分工作并行的可行性,提高迁移效率。
备份
在迁移前,需要先行备份,包括但不限于缓存数据、Redis配置文件,用于应急。
迁移
在完成一到两轮的迁移演练,并根据演练过程中发现的问题进行优化后,正式开始数据迁移。
迁移过程应该细化到每一步可执行的步骤,有明确的开始与结束确认动作。
数据验证
缓存数据的验证可以包括以下几方面:
- 各数据库的key分布是否与原来或者迁移预期一致
- 关键key的检查
- key的过期时间检查
- 实例是否能够正常备份和恢复
业务切换
- 当缓存数据完成迁移,且验证无误后,业务可以正式切换缓存数据的连接,恢复对外。
- 如果涉及到缓存数据库编号的变化,业务还需修改编号的选择配置。
- 如果业务整体由数据中心或其他云厂商迁移到云服务,业务和缓存数据的迁移可并行。
业务验证
业务切换后建议验证内容包含以下:
- 业务应用与DCS缓存实例的连通。
- 通过业务操作对缓存数据的增删改查。
- 如果条件满足,进行压测,确认性能满足业务峰值压力。
回退
当遇到演练中没有及时发现的问题,导致数据迁移后无法供业务使用,且短期无法解决,则涉及到业务回退。
由于源Redis数据仍然存在,因此只需业务完成回退,重新接入源Redis实例即可。
在完成回退后,可继续从演练甚至准备阶段重新开始,解决问题。
迁移信息收集表
评估和准备阶段收集的信息填写参考下表:
迁移源 信息项 说明 源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实例部署模式不一样,控制访问方式也不一样,需要制定相应的安全组或白名单规则,确保网络连通。 ... ... 其他配置信息。