Redis6.0.10升级迁移至Redis7.4.6(修复CVE‑2025‑49844,业务无需重启)

一、迁移背景

漏洞说明 :现有Redis 6.0.10存在 Redis LUA UAF 远程代码执行漏洞(CVE‑2025‑49844),需要升级到7.x版本进行漏洞修复。

本次目标版本:Redis‑7.4.6 生产环境旧Redis存有业务数据,要求迁移数据完成后,业务项目无需重启,实现平滑版本升级。

⚠️**重要前提**:本次采用主从复制迁移方案;操作前务必确认旧实例为Master主库。

二、环境说明

实例 版本 端口 角色
旧Redis 6.0.10 6379 Master(业务正在使用)
新Redis 7.4.6 6380(临时) Replica从库

三、操作步骤

3.1 确认旧Redis角色(确认是Master主库)

连接旧Redis客户端

复制代码
redis-cli -p 6379

输入认证密码,再查看复制信息

复制代码
127.0.0.1:6379> auth 你的密码
OK
127.0.0.1:6379> info replication

重点看输出:

复制代码
# Replication
role:master   # <font color="red">这里必须是master,才可以继续往下操作</font>
connected_slaves:0
......

如果role是slave,说明当前是从库,不能直接作为数据源,需要先切换主从再迁移。

3.2 配置新版本Redis为从库(临时端口6380)

修改新版本redis.conf配置文件

  1. 修改监听端口,不能和旧主库端口冲突

    port 6380

  2. 增加主从同步配置,指向旧的6379主库,填写主库访问密码

    replicaof 127.0.0.1 6379
    masterauth "你的密码"

⚠️**注意:先启动7.4.6的Redis实例,此时新实例作为从库开始全量同步旧库数据** 启动新版本redis:

复制代码
redis-server ../etc/redis.conf

3.3 校验主从数据同步是否完整

校验思路:对比主库、从库各个db的key数量,数量完全一致代表同步完成

旧主库(6379)查看key统计
复制代码
redis-cli -p 6379
127.0.0.1:6379> auth 你的密码
OK
127.0.0.1:6379> INFO keyspace

示例输出:

复制代码
# Keyspace
db0:keys=86,expires=0,avg_ttl=0,subexpiry=0
db6:keys=14,expires=0,avg_ttl=0,subexpiry=0
新从库(6380)查看key统计
复制代码
redis-cli -p 6380
127.0.0.1:6380> auth 你的密码
OK
127.0.0.1:6380> INFO keyspace

示例输出:

复制代码
# Keyspace
db0:keys=86,expires=0,avg_ttl=0,subexpiry=0
db6:keys=14,expires=0,avg_ttl=0,subexpiry=0

✅判断标准:所有db下keys数量、过期key数量完全相等,代表数据同步完成;如果不一致,等待同步,禁止进行切换操作!

数据量大场景,全量同步需要时间,不要立刻切换。

四、业务切换(低峰期操作!)

⚠️**强烈建议选择业务访问量少的时间段执行切换,减少业务抖动风险**

4.1 修改新版本Redis配置,取消从库身份,切回业务端口6379

编辑7.4.6的redis.conf

  1. 修改端口为业务原端口

    port 6379

  2. 注释/删除主从复制两行配置

    #replicaof 127.0.0.1 6379
    #masterauth "你的密码"

4.2 停止旧版本Redis 6.0.10

复制代码
#查找旧redis进程PID
ps -ef|grep redis
#杀死旧redis进程
kill -9 旧redis的PID

⚠️确认kill的是旧6.0.10进程,不要误杀新版本7.4.6进程!等旧的redis进程停止后,在停止掉7.4.6,保证在停止6.0.10的时候,已经同步数据到7.4.6

4.3 启动新版本Redis7.4.6(端口6379对外提供服务)

进入新版本bin目录执行:

复制代码
redis-server ../etc/redis.conf

4.4 验证升级结果

连接6379端口,查看Redis版本

复制代码
redis-cli -p 6379
127.0.0.1:6379> auth 你的密码
OK
127.0.0.1:6379> INFO server

重点查看:

复制代码
# Server
redis_version:7.4.6  #<font color="red">显示7.4.6,代表版本升级成功</font>
redis_mode:standalone
......

再执行INFO keyspace核对key数量,确认数据还在。

✨最后一步:务必进行业务功能测试,验证业务读写Redis正常,才算迁移完整结束。

五、踩坑与注意事项

  1. 主从同步期间,旧主库不能停机,否则同步失败;
  2. 密码配置注意:masterauth密码需要带双引号,防止特殊字符解析异常;
  3. 端口冲突:新版本先使用临时端口,不要直接占用6379;
  4. 必须等keyspace key计数完全一致再切换,不要凭主观感觉认为同步完成;
  5. 切换时先停旧redis,再启动新redis占用6379端口;
  6. 该方案实现业务无需重启,因为业务连接的还是6379端口,只是底层实例换成7.4.6;
  7. 操作前建议备份旧RDB/AOF数据,作为兜底回滚方案。

六、回滚思路(应急)

如果新版本出现异常:

  1. 停止7.4.6的6379实例;
  2. 重新启动旧版本Redis6.0.10监听6379端口,业务直接恢复;
  3. 排查迁移问题后再重新升级。
相关推荐
ly76896 小时前
Redis 大 Key 与热点 Key 生产治理:发现、拆分、限流与本地缓存的组合策略
redis·限流·本地缓存·大key·热点key
ShineWinsu9 小时前
对于Redis:AOF持久化的解析
linux·数据库·redis·缓存·面试·持久化·aof
仍然.9 小时前
Redis---集群
数据库·redis·缓存
hweiyu0011 小时前
Redis命令:HSCAN
redis·缓存
行者-全栈开发12 小时前
【Windows安全】CVE-2026-58248:Windows DNS Server RCE 漏洞修复指南(CVSS 10.0,域控制器的“心脏“危机)
漏洞修复·dns server·域控制器安全·远程代码执行·cvss 10.0·cve-2026-58248·基础设施安全
ly768913 小时前
Redis 分布式锁的边界条件:Redlock 争议、锁续期与客户端崩溃后的互斥失效
数据库·redis·分布式·分布式锁·watchdog·redlock
ShineWinsu15 小时前
对于Redis:RDB持久化的解析
linux·数据库·redis·缓存·面试·持久化·rdb
hweiyu001 天前
Redis命令:HTTL
redis·缓存
樱花落木兰1 天前
分布式登录实战:Session 会话共享改造,Redis 存储用户登录状态
java·javascript·数据库·redis·分布式·缓存
ShineWinsu1 天前
对于Redis:Steam、Geospatial、Hyperloglog、Bitmap、Bitfield类型的解析
数据库·c++·redis·分布式·缓存·面试·zset