确认 MySQL 服务正常启动并运行目标版本,通过 systemctl、ps、mysql - V 和 SELECT VERSION()验证;2. 登录数据库执行 SHOW DATABASES、USE mysql、SELECT 查询等基础操作检验功能;3. 若为 MySQL 8.0 以下版本,运行 mysql_upgrade 修复系统表结构;4. 核对数据库列表、表数量及记录数,CHECK TABLE 检测表状态,验证视图、存储过程、触发器可用性;5. 检查错误日志 /var/log/mysqld.log 是否存在 InnoDB 恢复、表损坏或字符集相关警告;6. 确认 character_set 和 collation 变量中 utf8mb4 及相关排序规则正确配置;7. 使用业务应用测试连接与读写功能,处理 caching_sha2_password 认证导致的连接失败;8. 升级后立即执行 mysqldump 全量备份并验证可恢复性,保留旧环境用于回滚。每步均需严格执行以保障生产稳定。

MySQL 升级完成后,必须进行全面验证以确保服务稳定、数据完整和应用兼容。以下是完整的验证操作步骤,帮助你系统性确认升级后的状态。
1. 检查 MySQL 服务状态
确认 MySQL 实例已正常启动,并运行在预期版本。
操作命令:
-
systemctl status mysqld(或mysql,根据系统命名) -
ps aux | grep mysqld查看进程是否存在 -
mysql -V查看客户端版本 -
mysql -e "SELECT VERSION();"查看服务器实际版本
确保输出的版本号与你升级的目标版本一致。
2. 登录并验证基础功能
测试能否正常连接数据库,执行基本操作。
-
mysql -u root -p尝试登录 - 执行:
SHOW DATABASES;、USE mysql; SHOW TABLES; - 简单查询:
SELECT user, host FROM user;
若提示权限错误或表损坏,需检查系统表是否升级完整。
3. 运行mysql_upgrade(如适用)
在 MySQL 8.0 以前版本中,升级后需手动运行 mysql_upgrade 来更新系统表结构。MySQL 8.0+ 已集成到启动流程中,但仍可手动执行验证。
命令:
mysql_upgrade -u root -p
该命令会检查并修复系统表,更新权限表结构,处理不兼容的元数据。
4. 验证数据完整性
确保原有数据库和表数据未丢失或损坏。
-
SHOW DATABASES;对比升级前的库列表 - 进入关键业务库:
USE your_db; SHOW TABLES; - 抽查表记录数:
SELECT COUNT(*) FROM important_table; - 检查表状态:
CHECK TABLE table_name;
如有视图、存储过程、触发器,也应逐一测试调用是否正常。
5. 检查错误日志
查看 MySQL 错误日志,排查潜在问题。
- 日志路径通常为:
/var/log/mysqld.log或 配置文件 中log_error指定路径 - 执行:
tail -f /var/log/mysqld.log
关注是否有“InnoDB recovery”、“table corruption”、“unknown collation”等警告或错误。
6. 验证字符集与排序规则
跨大版本升级(如 5.7 → 8.0)可能涉及默认字符集变化(utf8mb3 → utf8mb4)。
- 执行:
SHOW VARIABLES LIKE 'character_set%'; - 执行:
SHOW VARIABLES LIKE 'collation%';
确认业务表使用的字符集仍被支持,避免出现乱码或插入失败。
7. 测试应用程序连接
使用实际业务应用或脚本连接新 MySQL 实例。
- 运行读写操作,验证 CRUD 功能正常
- 检查连接池能否建立连接(注意认证插件变更,如 caching_sha2_password)
- 若有连接失败,可能需要重置用户密码并指定旧认证方式:
ALTER USER 'user'@'host' IDENTIFIED WITH mysql_native_password BY 'password';
8. 备份与回滚准备
即使验证通过,也建议在升级后立即做一次完整备份。
mysqldump --all-databases --single-transaction > backup.sql- 确认备份可恢复(可在测试环境还原验证)
保留旧版本安装包和数据目录副本,以便紧急回滚。
基本上就这些。每一步都关系到生产稳定性,不能跳过。尤其是日志检查和应用连通性,最容易暴露隐藏问题。