以下一般准则适用于排查 InnoDB
问题
当操作失败或您怀疑有错误时,请查看 MySQL 服务器错误日志(参见 第 7.4.2 节,“错误日志”)。服务器错误消息参考 为您可能遇到的某些常见的
InnoDB
特定错误提供故障排除信息。如果故障与 死锁 相关,请使用
innodb_print_all_deadlocks
选项启用运行,以便将有关每个死锁的详细信息打印到 MySQL 服务器错误日志。有关死锁的信息,请参见 第 17.7.5 节,“InnoDB 中的死锁”。如果问题与
InnoDB
数据字典相关,请参见 第 17.20.4 节,“排查 InnoDB 数据字典操作”。在故障排除时,通常最好从命令提示符运行 MySQL 服务器,而不是通过 mysqld_safe 或作为 Windows 服务运行。然后,您可以看到 mysqld 打印到控制台的内容,从而更好地了解发生了什么。在 Windows 上,使用
--console
选项启动 mysqld 以将输出重定向到控制台窗口。启用
InnoDB
监控器以获取有关问题的信息(参见 第 17.17 节,“InnoDB 监控器”)。如果问题与性能相关,或者您的服务器似乎挂起,则应启用标准监控器以打印有关InnoDB
内部状态的信息。如果问题与锁相关,请启用锁监控器。如果问题与表创建、表空间或数据字典操作相关,请参考 InnoDB 信息模式系统表 以检查InnoDB
内部数据字典的内容。InnoDB
在以下情况下暂时启用标准InnoDB
监控器输出长时间的信号量等待
InnoDB
无法在缓冲池中找到空闲块缓冲池中超过 67% 的空间被锁堆或自适应哈希索引占用
如果您怀疑表已损坏,请在该表上运行
CHECK TABLE
。