最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
MySQL 8.0原地升级MySQL 8.4失败如何办?
时间:2026-08-21 09:52:49 编辑:袖梨 来源:一聚教程网
MySQL 8.4启动卡在“activating (start)”状态,大概率是innodb_log_file_size配置值与磁盘上ib_logfile0实际字节大小不匹配,需停服后用ls -lh查真实大小并精确设置该参数,或删ib_logfile*后改innodb_redo_log_capacity重启。
原地升级失败,大概率不是操作顺序错了,而是启动前就卡在配置校验或插件加载环节——mysqld根本没跑起来,日志里却只显示“activating (start)”或空行。必须从错误日志开头逐行看,而不是直接重试。
启动卡在activating状态,实际是InnoDB日志文件尺寸不匹配
这是 CentOS/Ubuntu 上最隐蔽的失败点:旧 ib_logfile0 物理大小和配置中 innodb_log_file_size 值不一致,mysqld 不报错也不退出,就停在启动流程中间。
- 停服务后,用
ls -lh /var/lib/mysql/ib_logfile*查看真实文件大小(单位字节) - 把
my.cnf里innodb_log_file_size改成**完全相同的数字**,比如innodb_log_file_size = 134217728(不是128M) - 如果想改容量,必须先删掉
ib_logfile*文件,且确保之前执行过SET GLOBAL innodb_fast_shutdown = 0
报Unknown system variable 'MASTER_HOST',其实是配置语法过期
MySQL 8.4 彻底废弃所有 MASTER_* 复制参数,但不会提示“该参数已改名”,而是直接拒绝加载配置。
- 把
my.cnf中所有MASTER_HOST、MASTER_PORT、MASTER_USER全部替换成SOURCE_HOST、SOURCE_PORT、SOURCE_USER -
CHANGE MASTER TO语句也得同步改成CHANGE REPLICATION SOURCE TO(注意不是CHANGE SOURCE TO) - 如果复制已启用,升级前先
STOP REPLICA,否则启动时会尝试解析旧语法并失败
Error 1524: Plugin 'mysql_native_password' is not loaded,不是密码问题
这个错误和用户密码无关,是插件压根没被加载——mysql_native_password=ON 这行必须写在 [mysqld] 段里,且不能和 default_authentication_plugin 混用。
- 确认配置文件中只有这一行:
mysql_native_password=ON(不要加等号右边带引号,也不要写成default_authentication_plugin=mysql_native_password) - 重启后执行:
SELECT PLUGIN_NAME, PLUGIN_STATUS FROM INFORMATION_SCHEMA.PLUGINS WHERE PLUGIN_NAME = 'mysql_native_password';,结果必须是ACTIVE - 如果仍失败,检查
plugin_dir路径是否正确,ls -l $(mysql --help | grep "plugin" | awk '{print $NF}')/auth_socket.so确认文件存在
配置验证通过但服务起不来,先查 GLIBC 和路径空格
Windows 和老旧 Linux 发行版最容易栽在这两处,错误日志往往只显示“Could not open required defaults file”这种模糊提示。
- Linux 上运行
ldd --version,确保glibc >= 2.17;CentOS 7.9 是底线,EL6 直接不支持 - Windows 上检查
basedir和datadir路径:不能含中文、不能有空格、必须用正斜杠或双反斜杠(C:/mysql84或C:mysql84),单反斜杠会解析失败 - 用
mysqld --defaults-file=/etc/my.cnf --validate-config提前验证配置合法性,比盲目重启快得多
真正麻烦的从来不是升级动作本身,而是那些没报错却让服务静默卡住的细节——ib_logfile 尺寸、glibc 版本、路径里的空格,它们不会打断你执行命令,但会让整个实例永远停在“starting”状态。