MySQL 8.4升级必须绕开三类高频故障:mysql_native_password插件缺失、caching_sha2_password认证兼容性问题、系统表升级失败;升级前须硬性验证操作系统版本≥CentOS 7.9/Ubuntu 18.04/Debian 10、当前MySQL 8.0版本≥8.0.37、XA RECOVER返回空结果,缺一不可。

直接升级可行,但必须绕开 mysql_native_password 插件缺失、caching_sha2_password 认证兼容性、系统表升级失败这三类高频故障点。
升级前必须验证的三项硬性条件
跳过任意一项,后续大概率卡在启动或连接阶段:
- 操作系统版本 ≥ CentOS 7.9 / Ubuntu 18.04 / Debian 10(MySQL 8.4 已停止对 EL6/Debian 9 及更旧系统的支持)
- 当前 MySQL 8.0 版本 ≥
8.0.37(低于此版本存在已知的元数据升级 bug,官方明确不支持升级) -
XA RECOVER返回空结果(如有未提交 XA 事务,mysqld启动时会 hang 住,且不报错)
原地升级时最关键的配置变更项
MySQL 8.4 不再兼容旧配置写法,以下几处必须手动调整,否则服务无法启动:
-
my.cnf中所有MASTER_*复制参数(如MASTER_HOST)必须改为SOURCE_*(如SOURCE_HOST),否则报错Unknown system variable 'MASTER_HOST' -
innodb_log_buffer_size默认值从16M提升至64M,若物理内存不足 4GB,需显式设回16M,否则启动失败 - 移除所有
query_cache_*相关配置(MySQL 8.4 彻底移除了查询缓存模块,保留会触发启动警告并忽略)
连接失败:Error 1524 的即时修复方案
应用连不上新实例,报 Error 1524 (HY000): Plugin 'mysql_native_password' is not loaded,不是配置问题,是插件未启用:
- 先用
caching_sha2_password方式登录:mysql -u root -p --default-auth=caching_sha2_password - 执行:
INSTALL PLUGIN mysql_native_password SONAME 'auth_socket.so';(注意:文件名是auth_socket.so,不是auth_mysql_native_password.so) - 对业务用户逐个重置密码:
ALTER USER 'app_user'@'%' IDENTIFIED WITH mysql_native_password BY 'newpass'; - 若客户端驱动太老(如 MySQL Connector/J 5.1),必须升级到 8.0+ 驱动,否则即使插件启用也无法握手
升级后最容易被忽略的验证动作
很多团队只测 SELECT 和 INSERT,漏掉这些隐性依赖点:
- 检查
performance_schema表结构是否完成自动升级:SELECT COUNT(*) FROM performance_schema.replication_connection_status;(8.4 新增字段,若报错说明升级未完成) - 确认二进制日志格式仍是
ROW:SHOW VARIABLES LIKE 'binlog_format';(8.4 默认不变,但升级过程可能意外重置为STATEMENT) - 验证存储过程中的
DECLARE CONTINUE HANDLER是否仍生效(8.4 修正了部分异常处理逻辑,旧代码可能行为变化)


















