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