InnoDB
モニターで定期出力が有効になっている場合、InnoDB
は約 15 秒ごとに mysqld サーバーの標準エラー出力 (stderr
) に出力を書き込みます。
InnoDB
は、潜在的なバッファオーバーフローを回避するために、モニター出力を stdout
または固定サイズのメモリーバッファではなく stderr
に送信します。
Windows では、特に構成されていないかぎり、stderr
はデフォルトのログファイルに転送されます。 出力をエラーログではなくコンソールウィンドウに送る場合は、コンソールウィンドウで --console
オプションを使用してコマンドプロンプトからサーバーを起動します。 詳細は、Windows のデフォルトのエラーログの保存先を参照してください。
Unix および Unix に似たシステムでは、特に構成されていないかぎり、stderr
は通常端末に送信されます。 詳細は、Unix および Unix-Like システムでのデフォルトのエラーログの保存先を参照してください。
InnoDB
モニターは、出力生成によってパフォーマンスが低下するため、実際にモニター情報を表示する場合にのみ有効にする必要があります。 また、モニター出力がエラーログに送られた場合、後でモニターを無効にしないと、ログが非常に大きくなる可能性があります。
トラブルシューティングを支援するために、InnoDB
は、特定の状況で InnoDB
標準モニターの出力を一時的に有効にします。 詳細は、セクション15.21「InnoDB のトラブルシューティング」を参照してください。
InnoDB
モニターの出力は、タイムスタンプとモニター名を含むヘッダーで始まります。 例:
=====================================
2014-10-16 18:37:29 0x7fc2a95c1700 INNODB MONITOR OUTPUT
=====================================
ロックモニターでは、追加のロック情報が付加された同じ出力が生成されるため、InnoDB
標準モニターのヘッダー (INNODB MONITOR OUTPUT
) はロックモニターにも使用されます。
innodb_status_output
および innodb_status_output_locks
システム変数は、標準の InnoDB
モニターおよび InnoDB
ロックモニターを有効にするために使用されます。
InnoDB
モニターを有効または無効にするには、PROCESS
権限が必要です。
InnoDB 標準モニターの有効化
innodb_status_output
システム変数を ON
に設定して、標準の InnoDB
モニターを有効にします。
SET GLOBAL innodb_status_output=ON;
InnoDB
標準モニターを無効にするには、innodb_status_output
を OFF
に設定します。
サーバーをシャットダウンすると、innodb_status_output
変数がデフォルトの OFF
値に設定されます。
InnoDB ロックモニターの有効化
InnoDB
ロックモニターのデータは、InnoDB
標準モニターの出力とともに出力されます。 InnoDB
ロックモニターデータを定期的に印刷するには、InnoDB
標準モニターと InnoDB
ロックモニターの両方を有効にする必要があります。
InnoDB
ロックモニターを有効にするには、innodb_status_output_locks
システム変数を ON
に設定します。 InnoDB
ロックモニターデータを定期的に印刷するには、InnoDB
標準モニターと InnoDB
ロックモニターの両方を有効にする必要があります:
SET GLOBAL innodb_status_output=ON;
SET GLOBAL innodb_status_output_locks=ON;
InnoDB
ロックモニターを無効にするには、innodb_status_output_locks
を OFF
に設定します。 InnoDB
Standard Monitor も無効にするには、innodb_status_output
を OFF
に設定します。
サーバーをシャットダウンすると、innodb_status_output
および innodb_status_output_locks
変数がデフォルトの OFF
値に設定されます。
SHOW ENGINE INNODB STATUS
出力の InnoDB
ロックモニターを有効にするには、innodb_status_output_locks
を有効にする必要があります。
オンデマンドでの InnoDB 標準モニターの出力の取得
InnoDB
標準モニターでの定期的な出力を有効にする代わりに、出力をクライアントプログラムにフェッチする SHOW ENGINE INNODB STATUS
SQL ステートメントを使用して、オンデマンドで InnoDB
標準モニターの出力を取得できます。 mysql 対話型クライアントを使用している場合は、通常のセミコロンのステートメントターミネータを \G
に置き換えると、出力が読み取りやすくなります。
mysql> SHOW ENGINE INNODB STATUS\G
InnoDB
ロックモニターが有効になっている場合、SHOW ENGINE INNODB STATUS
出力には InnoDB
ロックモニターデータも含まれます。
標準の InnoDB モニター出力のステータスファイルへの送信
起動時に --innodb-status-file
オプションを指定すると、標準の InnoDB
モニター出力を有効にしてステータスファイルに送ることができます。 このオプションを使用すると、InnoDB
はデータディレクトリに innodb_status.
という名前のファイルを作成し、約 15 秒ごとに出力を書き込みます。
pid
サーバーが正常に停止されると、InnoDB
によってステータスファイルが削除されます。 異常停止が発生した場合は、ステータスファイルを手動で削除する必要がある場合があります。
--innodb-status-file
オプションは一時的な使用を目的としています。出力生成はパフォーマンスに影響を与える可能性があり、innodb_status.
ファイルは時間の経過とともに非常に大きくなる可能性があるためです。
pid