首页/数据/Redis 进阶速查/集群滚动升级流程

集群滚动升级流程

滚动升级按「从节点 → 主节点切换 → 原主节点」推进:先升从库,再把主库切到已升级从库(FAILOVER),最后升级旧主库并重新入群。

Redis 进阶速查数据更新于 2026-10-13

滚动升级的顺序

集群滚动升级按「从节点、主从角色切换、原主节点」三段推进:先把从库升到新版本,再用故障转移把主库角色交给已经升级的从库,最后升级原主库并让它作为新主库的从节点回到集群。这样每一刻集群里都有升级完成的节点在承担写入门面,服务不中断,出现问题时也能立刻停下不再推进。

基本信息

推荐顺序先升从节点,再做主从切换,最后升原主节点
切换命令针对指定副本的故障转移命令,或集群工具的转移子命令
推进粒度每个分片一组,逐组滚动而不是全集群同时
验证手段集群检查命令与业务冒烟
观察重点重定向次数与命令延迟的变化

典型使用场景

  • 小版本升级修复缺陷,希望不影响在线写入
  • 大版本升级前先在一个分片上试点,验证兼容性与性能
  • 升级脚本编排时明确每一组的停机与等待时间
  • 升级后需要确认节点版本一致、拓扑完整、无光杆分片
  • 出现异常时快速回退到升级前的节点版本

步骤示例

步骤示例
# 第一步:升级该分片的从节点并重启
docker pull redis:<新版本> && 重启从节点实例
redis-cli -p <从节点端口> INFO server | grep redis_version   # 确认新版本
# 第二步:把主库角色交给已升级的从节点
redis-cli -p <从节点端口> CLUSTER FAILOVER
redis-cli --cluster check 10.0.0.11:7000                     # 确认拓扑与槽无异常
# 第三步:升级原主节点,重启后它自动以副本身份重新入群
redis-cli --cluster check 10.0.0.11:7000

每步核对点

阶段核对内容异常表现
升从节点新版本已生效、同步追平版本没变或复制长期落后
角色切换主库已改指向新节点切换后仍指旧主,写入报错
升原主节点重启后自动成为副本以主身份回归形成双主风险
整组收尾无光杆分片、状态正常副本数量不足或状态异常
每个分片逐组滚动,观察重定向与延迟指标恢复正常后再推进下一组,把变量控制在一组之内才容易定位问题。
升级窗口内避免同时做迁移与扩容,多个变更叠加会让问题现象难以归因。

易错点

  • 一次性升级全部分片,出现问题时没有可比对的参照对象,定位成本大幅上升
  • 升级完从节点却忘记做角色切换,原主节点仍是旧版本,升级目标没有真正达成
  • 原主节点重启后未确认它已转为副本,存在双主写入的风险
  • 升级窗口内同时执行槽迁移,问题现象与升级动作混杂,无法判断根因

数据来源与参考

  • Redis 官方文档:集群升级与滚动维护建议
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌