最有效方式是直接升级到官方已修复漏洞的版本;MySQL需同大版本内小版本升级(如5.7.32→5.7.44),Redis需升至对应安全版(如修复CVE-2025-49844等高危漏洞),均须严格备份、验证兼容性并预留回滚方案。

MySQL 小版本升级关键操作
只在同一大版本内升级(如 5.7.32 → 5.7.44,或 8.0.30 → 8.0.33),严禁跨大版本(如 5.7 → 8.0)。
-
先确认当前状态:运行
mysql -V查版本,rpm -qa | grep mysql(RPM 安装)或ps aux | grep mysqld(二进制安装)确认部署方式 -
严格备份双保险:逻辑备份(
mysqldump --all-databases --single-transaction) + 物理备份(rsync /var/lib/mysql或 Percona XtraBackup 热备) -
RPM 方式注意包顺序:必须按
common → libs → client → server顺序安装,推荐用yum localinstall mysql-community-{common,libs,client,server}-X.x.x.rpm自动解依赖 -
升级后必执行:停库后启动新版本,再运行
mysql_upgrade --force -u root -p更新系统表结构
Redis 升级避坑要点
重点防范 CVE-2025-49844(UAF 远程代码执行)等高危漏洞,需升至对应安全版本。
Redis 缓存和数据结构管理技能。通过自然语言操作 Redis,支持 String、Hash、List、Set、ZSet、Stream 等数据结构操作。当用户提到 Redis、缓存、消息队列、会话存储时使用此技能。
-
查清是否受影响:连接 Redis 执行
INFO SERVER查redis_version,对照官方影响范围(如 Redis < 6.2.20、< 7.2.11、< 8.0.4 等均需升级) -
Docker 环境升级最简方案:修改
docker-compose.yml中镜像为redis:6.2.20或更高安全版,确保挂载的/data目录不变,重启容器即可保留数据 -
裸机升级要停服务:停止原进程 → 替换
redis-server二进制文件 → 检查配置兼容性(新版可能废弃某些参数)→ 启动并验证redis-cli ping -
必须禁用高危命令:若暂无法升级,临时加固:在
redis.conf中加入rename-command EVAL ""和rename-command EVALSHA "",阻断漏洞利用路径
通用前提与红线
无论 MySQL 还是 Redis,跳过这些步骤极易导致故障或回滚失败。
- 绝不跳过测试环节:生产升级前,务必在相同 OS、相同数据量、相同配置的测试环境完整走一遍流程
- 预留可回滚方案:保留旧版 RPM 包或二进制目录;备份必须验证可恢复(抽样导入测试库)
- 关注配套组件兼容性:比如 MySQL 升级后,检查应用使用的 JDBC 驱动是否支持新协议(如 8.0+ 默认 requireSSL);Redis 升级后确认客户端库(如 jedis、lettuce)版本匹配
- 避开业务高峰窗口:单实例升级通常需停服数分钟,主从架构建议先升从库、切换、再升主库,实现滚动更新

















