最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
MySQL 8.0升级MySQL 8.4 LTS需要注意什么
时间:2026-08-17 10:29:48 编辑:袖梨 来源:一聚教程网
必须验证三项硬性前置条件:操作系统版本≥CentOS 7.9/Ubuntu 18.04/Debian 10;MySQL 8.0版本≥8.0.37;XA RECOVER返回空结果。同时需将MASTER_参数全改为SOURCE_,并调整innodb_log_buffer_size默认值。
必须验证的三项硬性前置条件
跳过任意一项,升级后大概率卡在启动或连接阶段,不是配置问题,是服务根本起不来:
- 操作系统版本 ≥
CentOS 7.9/Ubuntu 18.04/Debian 10(EL6、Debian 9 及更旧系统已被 MySQL 8.4 彻底放弃) - 当前 MySQL 8.0 版本 ≥
8.0.37(低于此版本存在元数据升级 bug,最新明确不支持升级) -
XA RECOVER返回空结果(若有未提交 XA 事务,mysqld启动时会静默 hang 住,不报错也不退出)
my.cnf 配置项不改就启动失败
MySQL 8.4 不再兼容旧写法,以下几处必须手动调整,否则报错直接拒绝启动:
-
MASTER_HOST、MASTER_USER等所有MASTER_*复制参数 → 全部改为SOURCE_*(如SOURCE_HOST),否则报Unknown system variable 'MASTER_HOST' -
innodb_log_buffer_size默认值从16M提升至64M,若服务器物理内存 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+ 驱动,否则握手仍失败
最容易被忽略的驱动 Bug 和性能静默变更
这些问题不会报错,但上线后才暴露,且排查路径极绕:
-
mysql-connector-j 8.4.0存在最新确认 Bug #115736:ARM64 下连接初始化固定卡顿 30 秒,x86_64 Linux 普遍超 2 秒,高并发下频繁触发SQLNonTransientConnectionException: Got an error writing communication packets—— 必须弃用,改用8.4.1或更高版本 -
innodb_change_buffering默认值从all改为none,高频二级索引写入场景(如日志归档、ETL 导入)延迟毛刺变多、QPS 下降,旧配置未显式设置则实际已关闭 change buffer -
innodb_buffer_pool_instances等参数默认值改为动态计算,行为不可预测,生产环境必须显式配置,不能依赖默认值
XA RECOVER 是否为空、innodb_log_buffer_size 是否适配内存、驱动是否踩了 Bug #115736 —— 这些点不提前验证,故障一定发生在最不该出问题的时候。