温馨提示×

Redis版本如何升级

小樊
34
2025-12-20 11:30:22
栏目: 云计算

Redis 版本升级指南

一 升级策略与版本选择

  • 明确目标版本:优先选择最新的稳定版或包含安全修复的版本。近期官方修复了 Lua 脚本引擎 UAF 漏洞,受影响与修复版本如下(如受影响请尽快升级):
    • 受影响:Redis < 6.2.20、< 7.2.11、< 7.4.6、< 8.0.4、< 8.2.2
    • 修复:Redis >= 6.2.20、>= 7.2.11、>= 7.4.6、>= 8.0.4、>= 8.2.2
  • 选择路径:
    • 小版本原地升级(如 6.2.x → 6.2.20):官方保证向后兼容,风险低,适合单机/主从。
    • 跨大版本(如 5.x/6.x → 7.x):建议先评估变更与兼容性,必要时通过复制/迁移降低风险。
    • 版本选择原则:Redis 的偶数为稳定版,奇数为开发版,生产环境请选择稳定分支。

二 标准流程 原地升级(适用于小版本与安全修复)

  • 准备与检查
    • 查看当前版本:redis-cli INFO SERVER | grep redis_version
    • 备份配置与数据:cp /etc/redis/redis.conf /etc/redis/redis.conf.bakcp -r /var/lib/redis /var/lib/redis.bak
    • 触发一次快照落盘:redis-cli BGSAVE(或 SAVE
  • 停止旧实例
    • 优雅关闭:redis-cli SHUTDOWN(有密码/自定义端口:redis-cli -a <pwd> -p <port> SHUTDOWN
  • 升级二进制
    • 源码方式:wget http://download.redis.io/redis-stable.tar.gz && tar xvzf redis-stable.tar.gz && cd redis-stable && make && sudo make install
    • 包管理:sudo apt-get update && sudo apt-get install redis-server=<目标版本>(或 yum/dnf 等)
  • 启动与验证
    • 启动:redis-server /path/to/redis.conf(或 sudo systemctl start redis
    • 验证:redis-cli ping(应返回 PONG),redis-cli INFO SERVER | grep redis_version
  • 回滚预案
    • 快速回退二进制并恢复配置/数据目录;若使用包管理,可降级到原版本包。

三 高可用与集群的平滑升级

  • 主从复制切换(最小停机)
    • 在从库节点执行:SLAVEOF <主库IP> <端口> 同步数据,观察 INFO replication 的复制偏移量直至追平
    • 将“替身”从库提升为主:SLAVEOF NO ONE,关闭 slave-read-only
    • 将业务流量切至新主,原主下线、升级、再作为新从库接入,完成反向切换
  • 集群/多实例迁移
    • 搭建新版本集群,使用 Redis-Shake 进行在线/离线迁移并校验数据一致性,再切换应用连接
  • Docker 场景
    • BGSAVE 并备份挂载的数据卷;拉取新镜像(如 redis:6.2.20);docker-compose down 后用新镜像启动(数据卷不变),验证版本与键数量。

四 兼容性检查与安全加固

  • 配置与命令变更
    • 6.x 起引入 ACL,升级后按需重建用户与权限;部分命令默认行为更严格(如 FLUSHDB/FLUSHALL 在 4.0+ 支持 ASYNC,7.x 默认更安全)
    • 避免使用已废弃/不推荐命令(如用 SCAN 替代 KEYS *
  • 已知漏洞提示
    • 若运行在 Debian/Ubuntu 且版本 <= 6.2.6,存在 CVE-2022-0543(Lua 沙箱在特定打包环境下可被绕过),建议升级至 6.2.6+ 或更高版本
  • 升级后验证
    • 业务回归测试、延迟与命中率观测、慢查询检查、复制/集群状态与健康检查。

0