如何关闭AWS ElastiCache Redis的集群模式并保留数据?
解决方案:将集群模式启用的ElastiCache Redis转换为禁用集群模式实例
AWS官方不支持直接将集群模式启用的ElastiCache Redis转换为集群模式禁用的实例,核心原因包括:
- 参数
cluster-enabled是实例创建时的核心架构配置,一旦设定无法修改(这也是你修改参数组时收到错误提示的原因) - 集群模式Redis的RDB备份包含分片元数据,无法直接用于非集群实例的恢复
但你可以通过手动数据迁移的方式实现需求,具体步骤如下:
步骤1:导出集群模式Redis的全量数据
由于集群模式Redis的数据分散在多个分片节点上,需确保导出所有分片的数据:
- 使用专业迁移工具(如
redis-shake):该工具支持跨Redis架构的数据迁移,可自动遍历集群所有分片并导出全量数据 - 手动脚本导出:若不用工具,可编写脚本逐个连接每个分片节点,用
SCAN命令分批遍历键,再通过DUMP命令导出键值对,避免一次性执行KEYS *导致实例阻塞
步骤2:创建集群模式禁用的ElastiCache Redis实例
在AWS控制台创建新实例时,注意以下配置:
- 引擎选择Redis,版本与旧实例保持一致(如6.x)
- 明确选择集群模式禁用选项
- 配置匹配业务需求的节点规格、存储类型
- 关联非集群参数组(如
default.redis6.x)
步骤3:将数据导入新实例
- 若使用
redis-shake,直接配置目标实例地址即可完成批量导入 - 若手动导出,可将导出的键值对整理为Redis协议格式文件,再通过
redis-cli --pipe命令批量导入,该方式效率远高于逐个执行RESTORE命令
步骤4:验证与切换
- 导入完成后,用
SCAN命令核对新旧实例的键数量、关键业务数据,确保数据完整一致 - 将应用的Redis连接地址切换为新实例的端点,测试业务正常运行后,再删除旧的集群模式实例
注意事项
- 迁移前尽量暂停旧实例的写入操作,或开启旧实例的只读模式,避免迁移过程中出现数据不一致
- 选择业务低峰期执行迁移,减少对用户的影响
- 大体积数据优先使用
redis-shake这类工具,避免手动脚本的性能瓶颈
内容的提问来源于stack exchange,提问作者Diogo Melo
相关产品推荐
相关产品推荐

