需先查版本并确认升级路径,再备份数据与配置,检查兼容性,按场景选停机或滚动升级,最后验证功能与性能。

确认当前MySQL版本和升级路径
先登录MySQL执行 SELECT VERSION(); 查看当前版本号,再查阅MySQL官方升级文档,确认是否支持直接升级。例如从5.7升到8.0需经过中间版本(如先升至5.7.30+再升8.0),而8.0.x小版本间通常可直接升级。
备份所有数据和配置文件
升级前必须完整备份:
- 使用 mysqldump 导出全部数据库(含mysql系统库):
mysqldump -u root -p --all-databases --single-transaction > full_backup.sql - 复制当前的 my.cnf(或my.ini)配置文件,并记录自定义参数(如innodb_buffer_pool_size、sql_mode等)
- 保存data目录的完整快照(如用rsync或tar归档),尤其注意/var/lib/mysql路径
检查兼容性与配置变更
MySQL 8.0起默认启用严格模式、移除旧认证插件、更改默认字符集为utf8mb4_0900_ai_ci。需提前检查:
- 应用SQL是否使用已废弃语法(如
GRANT ... IDENTIFIED BY,应改用CREATE USER+GRANT) - 确认客户端驱动支持新认证方式(caching_sha2_password),必要时在配置中临时设 default_authentication_plugin=mysql_native_password
- 比对新旧版本的
sql_mode差异,避免因严格模式导致业务报错
选择升级方式并验证
推荐按场景选择:
-
小流量环境:停机升级——停止服务 → 替换二进制文件 → 运行
mysqld --upgrade→ 启动验证 - 生产环境:主从滚动升级——先升级从库,切换主从角色后再升级原主库,全程保持服务可用
- 升级后立即执行:
mysql_upgrade -u root -p(8.0.16+已自动集成,但建议仍检查输出日志) - 用原始备份恢复测试库,运行核心业务SQL验证功能与性能










