XAMPP 3.3.0中MySQL 3306端口无冲突意外关闭无日志如何排查
XAMPP 3.3.0 MySQL启动后意外退出故障排查
基础环境与故障表现
- 运行环境:XAMPP 3.3.0集成包
- MySQL配置端口:3306,已排查确认无端口占用冲突
- 故障现象:MySQL启动时持续加载无响应,加载一段时间后自动退出,全过程无明确错误日志输出
采集到的故障日志
XAMPP控制台日志
21:05:56 [mysql] Error: MySQL shutdown unexpectedly. 21:05:56 [mysql] This may be due to a blocked port, missing dependencies, 21:05:56 [mysql] improper privileges, a crash, or a shutdown by another method. 21:05:56 [mysql] Press the Logs button to view error logs and check 21:05:56 [mysql] the Windows Event Viewer for more clues 21:05:56 [mysql] If you need more help, copy and post this 21:05:56 [mysql] entire log window on the forums
MySQL服务端运行日志
2022-06-18 21:07:34 0 [Note] InnoDB: Mutexes and rw_locks use Windows interlocked functions 2022-06-18 21:07:34 0 [Note] InnoDB: Uses event mutexes 2022-06-18 21:07:34 0 [Note] InnoDB: Compressed tables use zlib 1.2.11 2022-06-18 21:07:34 0 [Note] InnoDB: Number of pools: 1 2022-06-18 21:07:34 0 [Note] InnoDB: Using SSE2 crc32 instructions 2022-06-18 21:07:34 0 [Note] InnoDB: Initializing buffer pool, total size = 16M, instances = 1, chunk size = 16M 2022-06-18 21:07:34 0 [Note] InnoDB: Completed initialization of buffer pool 2022-06-18 21:07:34 0 [Note] InnoDB: 128 out of 128 rollback segments are active. 2022-06-18 21:07:34 0 [Note] InnoDB: Creating shared tablespace for temporary tables 2022-06-18 21:07:34 0 [Note] InnoDB: Setting file 'C:\xampp\mysql\data\ibtmp1' size to 12 MB. Physically writing the file full; Please wait ... 2022-06-18 21:07:34 0 [Note] InnoDB: File 'C:\xampp\mysql\data\ibtmp1' size is now 12 MB. 2022-06-18 21:07:34 0 [Note] InnoDB: Waiting for purge to start 2022-06-18 21:07:35 0 [Note] InnoDB: 10.4.24 started; log sequence number 3046387; transaction id 1396 2022-06-18 21:07:35 0 [Note] InnoDB: Loading buffer pool(s) from C:\xampp\mysql\data\ib_buffer_pool 2022-06-18 21:07:35 0 [Note] Plugin 'FEEDBACK' is disabled. 2022-06-18 21:07:35 0 [Note] Server socket created on IP: '::'.
根因判断
从日志链路看,InnoDB存储引擎完成内存初始化、临时表空间创建、缓冲池加载全流程,在创建完IPv6监听套接字后无后续启动记录,也未抛出明确错误,排除端口占用问题后,故障集中在三个方向:
- MySQL进程对数据目录无完整读写权限,初始化完成后无法写入pid文件、启动监听线程
- 系统hosts文件中IPv6本地回环配置异常,套接字创建后无法完成绑定
- 上一次MySQL异常退出时残留了锁文件、过期日志文件,导致启动流程卡死
修复操作步骤
按顺序操作,每完成一步就尝试启动MySQL验证,不需要做完所有步骤:
- 修复数据目录权限
进入XAMPP安装目录下的mysql/data文件夹,右键打开「属性」-「安全」面板,给当前登录系统的账号、NETWORK SERVICE账号勾选完全控制权限,点击应用保存设置。 - 清理异常残留文件
先完全退出XAMPP控制台,打开任务管理器确认没有mysqld.exe进程在后台运行,之后进入mysql/data目录:- 删除所有后缀为
.pid的进程标识文件 - 删除
ib_logfile0、ib_logfile1两个InnoDB重做日志文件,注意不要删除ibdata1文件和以数据库名命名的文件夹,否则会造成数据丢失 - 目录下如果存在
mysql.sock类套接字文件,一并删除
- 删除所有后缀为
- 修复本地hosts配置
用管理员权限打开记事本,打开C:\Windows\System32\drivers\etc\hosts文件,确认以下两行配置没有被注释(行首没有#符号):
如果配置被注释就删掉行首的127.0.0.1 localhost ::1 localhost#,保存文件后打开命令提示符执行ipconfig /flushdns刷新本地DNS缓存。 - InnoDB强制恢复(前三步无效时使用)
打开mysql/bin/my.ini配置文件,在[mysqld]段落下添加一行配置:
保存后尝试启动MySQL,如果能正常启动,第一时间导出所有数据库的备份数据,之后关闭MySQL,删除刚才添加的强制恢复参数,清空data目录重新初始化数据库后,再把备份数据导入即可。innodb_force_recovery = 1
注意:
innodb_force_recovery参数值最高不要设到4及以上,否则可能造成InnoDB数据永久损坏。
内容的提问来源于stack exchange,提问作者Pandora
相关产品推荐
相关产品推荐

