CentOS Redis 版本升级流程
一 升级前准备
- 备份数据与配置
- 连接实例执行持久化:执行 SAVE 或 BGSAVE,确认生成 RDB 文件;通过 CONFIG GET dir 与 CONFIG GET dbfilename 确认备份文件路径与名称,物理拷贝该文件到安全位置。
- 备份配置文件与目录:如 /etc/redis/redis.conf、/var/lib/redis 等。
- 检查运行状态与版本
- 查看进程:ps -ef | grep redis-server;查看版本:redis-server --version、redis-cli INFO server。
- 选择升级方式
- 包管理升级(yum/dnf):简单、可回滚,但版本可能滞后。
- 源码编译升级:版本可控、可并行安装多版本,便于灰度与回滚。
- 编译依赖与 GCC
- 安装编译工具:yum groupinstall “Development Tools” -y && yum install -y tcl。
- CentOS 7 默认 GCC 较低,Redis 6+ 建议 GCC ≥ 5.3;可使用 devtoolset-9(SCL)启用高版本 GCC。
二 方式一 包管理升级 yum/dnf(适合快速升级)
- 安装/更新 EPEL 与 Remi(示例为 Remi,按需选择仓库):
- sudo yum install -y epel-release
- 启用 Remi 仓库(以 Remi 为例,具体按仓库说明启用对应版本)
- 查看可用版本并安装:
- 查询:yum list --showduplicates redis
- 安装指定版本:sudo yum install -y redis-(或更新到仓库最新版:sudo yum update -y redis)
- 重启与验证:
- 重启:sudo systemctl restart redis
- 验证:redis-server --version、redis-cli INFO server
- 回滚思路:使用已保存的旧版 RPM 包或快照/镜像回退,或切换仓库到旧版本后重装。
三 方式二 源码编译升级(版本可控、便于并行与回滚)
- 安装编译环境(CentOS 7 示例启用 devtoolset-9):
- 安装工具链:yum install -y yum-utils devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils
- 启用高版本 GCC:在当前 shell 执行 scl enable devtoolset-9 bash,或写入 /etc/profile 持久化。
- 获取并编译新版本:
- 下载:wget https://download.redis.io/releases/redis-.tar.gz
- 编译安装:make && make install(默认安装到 /usr/local/bin;如需指定目录:make PREFIX=/opt/redis install)。
- 迁移配置与数据:
- 备份新默认配置:cp redis.conf redis.conf.bak
- 复用旧配置:将旧 redis.conf 拷入新目录并按需调整(如 bind/port、requirepass、daemonize/supervised、logfile、dir 等)。
- 放置 RDB:将备份的 dump.rdb 放到新配置的 dir 指定目录,确保权限正确。
- 启动与验证:
- 启动:/usr/local/bin/redis-server /path/redis.conf(或使用安装前缀路径)
- 验证:redis-server --version、redis-cli INFO server,并抽样 **redis-cli DBSIZE/KEYS *** 检查数据。
四 主从与集群的平滑升级策略
- 主从架构
- 先升级从节点:逐台 shutdown 旧从节点,用新版本启动并接入主节点,观察复制与复制偏移量,确认追平后再升级下一个从节点。
- 升级主节点:选择一个从节点切换为主(如手动故障转移或调整复制拓扑),升级原主节点后重新加入作为从节点。
- 集群架构
- 利用集群特性:一次只对一个分片的 从节点 进行替换升级,待其与主节点追平后,再对该分片的 主节点 进行升级;逐分片滚动完成全集群升级。
- 升级期间保持副本可用,尽量在业务低峰窗口操作,并做好回滚预案。
五 回滚与验证清单
- 快速回滚
- 包管理:切回旧版本仓库后 yum downgrade redis 或重装旧包;
- 源码:停止新实例,恢复旧版 redis-server/redis-cli 与 redis.conf,将 RDB 放回原 dir 后启动旧实例。
- 验证要点
- 版本:redis-server --version、INFO server;
- 数据:抽样 DBSIZE/SCAN/GET 校验关键数据;
- 复制/集群:INFO replication(主从偏移量一致)、CLUSTER NODES/INFO cluster(集群状态正常);
- 日志与告警:检查 logfile 无异常,监控告警恢复正常。