InnoDB故障排除
有几种情况需要手动检查和排除InnoDB的故障:
- 性能或瓶颈问题
- 死锁或等待超时
- 进程故障或系统崩溃
InnoDB附带了几种有用的方法,可以通过MySQL和状态日志文件,information_schema查询以及InnoDB引擎的直接报告来帮助故障排除过程。
InnoDB 系统故障问题通常可归因于硬件限制或配置错误,其中超出了缓冲区或日志的可用限制。
InnoDB系统崩溃
InnoDB虽然通常是用于高流量事务环境的非常稳定的数据库引擎,但并非没有缺陷。
有时缓冲区崩溃、发生未知错误或出现其他可能导致数据库停机的问题。
我们可以依靠 ACID 合规性来确保在发生崩溃时不会丢失任何数据。
如果您已将InnoDB设置为使用符合ACID的设置,则除非发生外部问题,否则不会丢失数据。
外部问题包括InnoDB认为它已将数据写入磁盘,但使用非电池备份缓存的软件RAID机制或RAID系统尚未将更改完全写入磁盘。
当 InnoDB 因进程故障而崩溃时,ib_data日志文件不会刷新到磁盘,并且某些事务可能尚未完成 COMMIT 阶段。理想情况下,当MySQL在崩溃后启动时,InnoDB将开始崩溃恢复过程,并给予足够的时间,它将完成而不会出错。
我们可以通过观察MySQL错误日志来查看崩溃恢复过程处于什么状态。
$> sudo tail -f <data_dir>/<hostname>.err
在观察输出时,我们可以看到InnoDB为崩溃恢复所经历的步骤:
1.在接受连接之前