InnoDB
の問題のトラブルシューティングには、次の一般的なガイドラインが適用されます。
操作が失敗した場合、またはバグが疑われる場合は、MySQL サーバーのエラーログを参照してください (セクション5.4.2「エラーログ」 を参照)。Server Error Message Reference では、発生する可能性のある
InnoDB
固有の一般的なエラーのトラブルシューティング情報が提供されます。障害が deadlock に関連している場合は、各デッドロックの詳細が MySQL サーバーのエラーログに出力されるように、
innodb_print_all_deadlocks
オプションを有効にして実行します。 デッドロックの詳細は、セクション15.7.5「InnoDB のデッドロック」 を参照してください。問題が
InnoDB
データディクショナリに関連している場合は、セクション15.21.3「InnoDB データディクショナリの操作のトラブルシューティング」 を参照してください。トラブルシューティング時は通常、mysqld_safe 経由、または Windows サービスとしてではなく、コマンドプロンプトから MySQL サーバーを実行することが最善です。 それにより、mysqld がコンソールに出力する内容を確認できるため、何が発生しているかをより的確に把握できます。 Windows では、出力先がコンソールウィンドウになるように、
--console
オプションを付けて mysqld を起動します。-
InnoDB
モニターを有効にして、問題に関する情報を取得します (セクション15.17「InnoDB モニター」 を参照)。 その問題がパフォーマンスに関するものか、またはサーバーがハングアップしているように見える場合は、InnoDB
の内部状態に関する情報を出力するために、標準モニターを有効にするようにしてください。 問題がロックに関するものである場合は、ロックモニターを有効にします。 テーブルの作成、テーブルスペースまたはデータディクショナリ操作に問題がある場合は、InnoDB Information Schema system tables を参照してInnoDB
内部データディクショナリの内容を調べます。InnoDB
は、次の条件の下でInnoDB
標準モニターの出力を一時的に有効にします。長いセマフォー待機
InnoDB
がバッファープール内に空きブロックを見つけることができないロックヒープまたはアダプティブハッシュインデックスによってバッファープールの 67% を超える領域が占有されている
テーブルが破損していると思われる場合は、そのテーブルに対して
CHECK TABLE
を実行します。