MySQL 5.7 升级到 8.0

适用场景

需要 MySQL 8.0 的新特性、性能改进或厂商支持截止时,把 5.7 升级到 8.0。升级不可逆,必须准备备份和回滚。

前置条件

步骤

  1. 兼容性检查:
mysqlsh --uri root@db:3306 --js -e 'util.checkForServerUpgrade()'
  1. 检查关键项:
SELECT @@version, @@sql_mode, @@character_set_server;
SHOW VARIABLES LIKE 'default_authentication_plugin';
SELECT table_schema, table_name, table_collation
FROM information_schema.tables WHERE table_collation LIKE 'utf8_%';
  1. 备份:
mysqldump -u root -p --single-transaction --routines --triggers \
  --events --all-databases > all-5.7.sql

或使用 XtraBackup 物理备份。

  1. 安装 MySQL 8.0 并停旧实例,按官方流程启动新版本:
systemctl stop mysqld
# 安装 8.0 包,保留旧数据目录备份
systemctl start mysqld
  1. 让服务端完成系统表升级(8.0.16+ 使用 --upgrade 参数,不再有 mysql_upgrade):
mysqld --upgrade=FORCE
  1. 更新账号认证插件和驱动:
ALTER USER 'app'@'%' IDENTIFIED WITH caching_sha2_password BY 'password';

验证

回滚

常见坑

相关命令