如何在不影响生产实例的情况下将MySQL 5.7.29升级至5.7.38
MySQL 5.7.29 → 5.7.38 无停机升级操作步骤
由于是同大版本内的小版本升级,风险可控,以下两种方案可实现生产实例无影响升级:
前置必做操作
- 全量备份生产数据(务必验证备份可用):
mysqldump -u root -p --all-databases --single-transaction --master-data=2 --flush-logs > full_backup_$(date +%Y%m%d).sql - 将备份导入测试实例,确认数据完整
- 下载对应操作系统的 MySQL 5.7.38 安装包(rpm/deb 格式)
方案1:主从架构滚动升级(推荐)
适用于已有主从复制的生产环境,全程无业务中断
升级从库
- 停止复制进程:
STOP SLAVE; - 关闭从库服务:
systemctl stop mysqld - 卸载旧版本程序包(保留数据和配置文件):
# RHEL/CentOS 系统 yum remove mysql-community-server-5.7.29 # Debian/Ubuntu 系统 apt remove mysql-server-5.7.29 - 安装5.7.38版本:
# RHEL/CentOS 系统 yum install mysql-community-server-5.7.38 # Debian/Ubuntu 系统 apt install mysql-server-5.7.38 - 启动从库并检查版本:
systemctl start mysqld mysql -V - 恢复复制并验证状态:
确保START SLAVE; SHOW SLAVE STATUS\GSlave_IO_Running和Slave_SQL_Running均为Yes,无复制延迟
- 停止复制进程:
切换流量至升级后的从库
- 修改应用的数据库连接地址为该从库IP
- 验证业务运行正常后,将该从库设为新主库:
RESET MASTER;
升级原主库
- 重复步骤1的操作,将原主库升级至5.7.38
- 可选:将原主库设置为新主库的从库,恢复主从架构
方案2:单实例无停机升级
单实例环境需先搭建临时从库,再完成切换
- 基于生产实例的全量备份,搭建一个临时从库(版本5.7.29),确保复制同步正常
- 按照方案1的步骤升级临时从库至5.7.38
- 将应用流量切换至临时从库,验证业务正常
- 升级原生产实例至5.7.38,之后可将其设为新主库的从库,或直接作为主库使用
收尾检查
- 查看错误日志,确认无异常:
tail -n 50 /var/log/mysqld.log - 执行
mysql_upgrade确保元数据同步(同大版本可选,但建议执行):mysql_upgrade -u root -p
内容的提问来源于stack exchange,提问作者Prasad Karguppikar
相关产品推荐
相关产品推荐

