## 15.21 InnoDB 故障排除

[15.21.1 解决 InnoDB I/O 问题](error-creating-innodb.html)
[15.21.2 恢复故障故障排除](innodb-troubleshooting-recovery.html)
[15.21.3 强制 InnoDB 恢复](forcing-innodb-recovery.html)
[15.21.4 InnoDB 数据字典操作故障排除](innodb-troubleshooting-datadict.html)
[15.21.5 InnoDB 错误处理](innodb-error-handling.html)

[](<>)

以下一般准则适用于故障排除`InnoDB`问题：

-   当操作失败或您怀疑存在错误时，请查看 MySQL 服务器错误日志（请参阅[第 5.4.2 节，“错误日志”](error-log.html)）。[服务器错误消息参考](https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-reference.html)提供一些常见的故障排除信息`InnoDB`- 您可能遇到的特定错误。

-   如果故障与[僵局](glossary.html#glos_deadlock), 运行[`innodb_print_all_deadlocks`](innodb-parameters.html#sysvar_innodb_print_all_deadlocks)启用选项，以便将有关每个死锁的详细信息打印到 MySQL 服务器错误日志。有关死锁的信息，请参阅[第 15.7.5 节，“InnoDB 中的死锁”](innodb-deadlocks.html).

-   如果问题与`InnoDB`数据字典，见[第 15.21.4 节，“InnoDB 数据字典操作故障排除”](innodb-troubleshooting-datadict.html).

-   故障排除时，通常最好从命令提示符运行 MySQL 服务器，而不是通过[**mysqld\_安全的**](mysqld-safe.html)或作为 Windows 服务。然后你可以看到什么[**mysqld**](mysqld.html)打印到控制台，因此可以更好地掌握正在发生的事情。在 Windows 上，启动[**mysqld**](mysqld.html)与[`- 安慰`](server-options.html#option_mysqld_console)将输出定向到控制台窗口的选项。

-   [](<>) [](<>)启用`InnoDB`监视器以获取有关问题的信息（请参阅[第 15.17 节，“InnoDB 监视器”](innodb-monitors.html)）。如果问题与性能有关，或者您的服务器似乎挂起，您应该启用标准监视器以打印有关服务器内部状态的信息`InnoDB`.如果问题出在锁上，请启用锁监视器。如果问题与表创建、表空间或数据字典操作有关，请参阅[InnoDB 信息模式系统表](innodb-information-schema-system-tables.html)检查内容`InnoDB`内部数据字典。

    `InnoDB`暂时启用标准`InnoDB`在以下条件下监视输出：

    -   长时间的信号等待

    -   `InnoDB`在缓冲池中找不到空闲块

    -   超过 67% 的缓冲池被锁堆或自适应哈希索引占用

-   如果您怀疑表已损坏，请运行[`检查表`](check-table.html)在那张桌子上。
