MySQL启动后几秒崩溃,innodb_force_recovery=6无效求助
MySQL服务启动数秒后崩溃,innodb_force_recovery=6无效的排查方案
问题背景
- 服务启动后数秒即停止,设置
innodb_force_recovery=6无法解决故障 - 两个月前曾因断电导致崩溃,当时已完成恢复并正常运行至今,现出现严重底层故障
完整错误日志(中文翻译)
关于崩溃原因的排查信息可参考官方手册。 2022-10-24T07:14:00.931490Z 0 [警告] [MY-011068] [服务器] 语法'--ssl=off'已被弃用,后续版本会移除,请改用'--tls-version=invalid'。 2022-10-24T07:14:00.931754Z 0 [警告] [MY-010097] [服务器] --secure-file-priv配置不安全:当前值未限制生成文件的存储位置,建议设置为合法的非空路径。 2022-10-24T07:14:00.931858Z 0 [系统] [MY-010116] [服务器] C:\Program Files\MySQL\MySQL Server 8.0\bin\mysqld.exe (mysqld 8.0.30) 以进程11348启动 2022-10-24T07:14:00.957031Z 1 [系统] [MY-013576] [InnoDB] InnoDB初始化已启动 2022-10-24T07:14:05.020472Z 1 [系统] [MY-013577] [InnoDB] InnoDB初始化已完成 2022-10-24T07:14:06.443189Z 0 [警告] [MY-011302] [服务器] 插件mysqlx报告:'SSL配置失败:"没有证书和私钥的SSL上下文不可用"' 2022-10-24T07:14:06.445335Z 0 [系统] [MY-011323] [服务器] X插件已准备好接受连接。绑定地址: '::' 端口: 33060 2022-10-24T07:14:06.445535Z 0 [系统] [MY-010931] [服务器] C:\Program Files\MySQL\MySQL Server 8.0\bin\mysqld.exe:已准备好接受连接。版本: '8.0.30' 套接字: '' 端口: 3306 MySQL Community Server - GPL。 2022-10-24T07:14:46.604890Z 0 [错误] [MY-013183] [InnoDB] 断言失败:fsp0fsp.cc:2152:inode 线程3196 InnoDB: 我们主动触发内存陷阱。 InnoDB: 请向官方提交详细bug报告。 InnoDB: 如果反复出现断言失败或崩溃,即使是在mysqld启动后立即发生,可能是InnoDB表空间损坏。请参考官方文档关于强制恢复的内容。 07:14:46 UTC - mysqld 遇到异常0x16 ; 大概率是触发了bug,但也可能由硬件故障导致。 线程指针: 0x2cf63dc87d0 尝试生成回溯信息。你可以用以下信息定位mysqld崩溃位置。如果之后没有信息输出,说明情况非常严重... 7ff755370858 mysqld.exe!?my_print_stacktrace@@YAXPEBEK@Z() 7ff75450e92b mysqld.exe!?print_fatal_signal@@YAXH@Z() 7ff75450e6f3 mysqld.exe!?my_server_abort@@YAXXZ() 7ff7553547fa mysqld.exe!?my_abort@@YAXXZ() 7ff75559ca99 mysqld.exe!?deallocate@?$allocator@V?$sub_match@V?$_String_const_iterator@V?$_String_val@U?$_Simple_types@D@std@@@std@@@std@@@std@@@std@@QEAAXQEAV?$sub_match@V?$_String_const_iterator@V?$_String_val@U?$_Simple_types@D@std@@@std@@@std@@@2@_K@Z() 7ff75555c866 mysqld.exe!?deallocate@?$allocator@V?$sub_match@V?$_String_const_iterator@V?$_String_val@U?$_Simple_types@D@std@@@std@@@std@@@std@@@std@@QEAAXQEAV?$sub_match@V?$_String_const_iterator@V?$_String_val@U?$_Simple_types@D@std@@@std@@@std@@@2@_K@Z() 7ff75555c46e mysqld.exe!?deallocate@?$allocator@V?$sub_match@V?$_String_const_iterator@V?$_String_val@U?$_Simple_types@D@std@@@std@@@std@@@std@@@std@@QEAAXQEAV?$sub_match@V?$_String_const_iterator@V?$_String_val@U?$_Simple_types@D@std@@@std@@@std@@@2@_K@Z() 7ff7554640f2 mysqld.exe!??$endl@DU?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@@Z() 7ff755466d8d mysqld.exe!??$endl@DU?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@@Z() 7ff755465e2f mysqld.exe!??$endl@DU?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@@Z() 7ff755465ccb mysqld.exe!??$endl@DU?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@@Z() 7ff7554630c8 mysqld.exe!??$endl@DU?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@@Z() 7ff755474202 mysqld.exe!??$endl@DU?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@@Z() 7ff755477cc4 mysqld.exe!??$endl@DU?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@@Z() 7ff75553033d mysqld.exe!?deallocate@?$allocator@V?$sub_match@V?$_String_const_iterator@V?$_String_val@U?$_Simple_types@D@std@@@std@@@std@@@std@@@std@@QEAAXQEAV?$sub_match@V?$_String_const_iterator@V?$_String_val@U?$_Simple_types@D@std@@@std@@@std@@@2@_K@Z() 7fffe04d1bb2 ucrtbase.dll!_configthreadlocale() 7fffe0807034 KERNEL32.DLL!BaseThreadInitThunk() 7fffe27026a1 ntdll.dll!RtlUserThreadStart() 尝试获取部分变量信息。 部分指针可能无效,导致转储终止。 查询 (0): 连接ID (线程ID): 0 状态: NOT_KILLED 关于崩溃原因的排查信息可参考官方手册。
排查与修复步骤
1. 硬件故障排查
- 磁盘检测:用CHKDSK扫描存储MySQL数据的磁盘,检查是否存在坏道或读写异常
- 内存验证:运行Windows内存诊断工具,排除内存损坏导致的程序崩溃
2. 进阶恢复参数尝试
- 在
my.cnf或my.ini中添加innodb_purge_threads=0,搭配innodb_force_recovery=6再次尝试启动,减少后台清理操作对损坏表空间的影响 - 启动时添加参数
--skip-grant-tables --skip-innodb,跳过InnoDB启动流程,若能进入命令行,优先导出MyISAM类型表的数据
3. 表空间修复与数据恢复
- 若有最近的全量备份,直接恢复到全新的MySQL实例中
- 无备份时,可尝试用第三方数据恢复工具扫描损坏的InnoDB表空间,提取可恢复的数据
4. 版本与bug验证
- 检查MySQL 8.0.30的官方bug列表,确认是否存在
fsp0fsp.cc:2152相关的已知问题,考虑升级到同系列稳定版本(如8.0.36)后再尝试启动
内容的提问来源于stack exchange,提问作者sevatster
相关产品推荐
相关产品推荐

