無料PHPプログラム

MySQL 5.1 リファレンスマニュアル :: 4 データベース管理 :: 4.11 MySQL サーバ ログ :: 4.11.3 一般クエリ ログ
« 4.11.2 エラー ログ

4.11.4 バイナリ ログ »
Section Navigation      [Toggle]
  • 4.11 MySQL サーバ ログ
  • 4.11.1 一般クエリとスロー クエリのログ出力先の選択
  • 4.11.2 エラー ログ
  • 4.11.3 一般クエリ ログ
  • 4.11.4 バイナリ ログ
  • 4.11.5 スロー クエリ ログ
  • 4.11.6 ログ ファイルの保守

4.11.3. 一般クエリ ログ

mysqld での出来事を記録しているのが、一般クエリ ログです。サーバはこのログに、クライアント接続や切断の情報を書き込み、そのときのクライアントからの SQL ステートメントも記録します。一般クエリ ログはクライアント側でのエラーを検討するときに、クライアントが mysqld に何を送ったことによって問題が発生したかを正確に知ることができます。 

mysqld ではステートメントを到着順にクエリ ログに書き込みますが、実行した順番とは異なることがあります。このロギングの順番は、ステートメントを実行した後のクエリがロックがリリースされる前である場合には、バイナリ ログとは対照的です。また、クエリ ログにはすべてのステートメントが入る一方で、バイナリ ログにはデータだけを選択するステーメントは入りません。

MySQL 5.1.6 から、一般クエリ ログを有効化するには、mysqld を --log[=file_name] または -l [file_name] で起動するか、あるいは --log-output を使用してログ先を指定します (項4.11.1. 「一般クエリとスロー クエリのログ出力先の選択」 を参照)。MySQL 5.1.6 前は、一般クエリ ログの出力先は常にファイルです。一般クエリ ログ ファイルを有効化するには、--log[=file_name] または -l [file_name] のオプションを使用します。

--log または -l に file_name 値を指定しない場合、デフォルト名は、host_name.log というデータ ディレクトリのファイル名になります。絶対パスでファイル名を指定しない場合、このファイルはデータ ディレクトリに置かれます。

MySQL 5.1.12 以降、--log または -l を指定する場合、--general-log オプションで最初の一般クエリ ログ状態を指定することも可能です。このオプションで、引数なし、または 値を 0 にすると、ログが無効化します。省略する、または値を 1 とすると、ログが有効化します。--log または-l を指定しない場合、--general-log には何の影響もありません。

general_log および general_log_file のグローバル システム変数で、一般クエリ ログのランタイム制御ができます。general_log を 0 (または OFF) にすると、ログが無効化し、1 (または ON) で有効化します。general_log_file を指定して、ログ ファイルの名前を指定することもできます。ログ ファイルがすでに開いている場合は、それを閉じて、新規ファイルを開けます。

一般クエリ ログを有効化した場合、出力の書き込み先は --log-output オプション、または log_output 環境変数で指定します。ノート: 出力先が NONE である場合、一般ログを有効化していても、出力書き込みはできません。同様に、ログ出力先の値に FILE がない場合は、ログ効果はありません。

サーバの再起動やログのフラッシュでは、一般クエリ ログの新規ファイルを生成しません。フラッシュはファイルを閉じて、それを再び開けるだけです。Unix では、ファイル名を変更して、次のコマンドを使用して、新規ファイルを作成できます。

shell> mv host_name.log host_name-old.log
shell> mysqladmin flush-logs
shell> cp host_name-old.log backup-directory
shell> rm host_name-old.log

Windows では、サーバがログ ファイルを使用している間は、ログ ファイルの名前変更はできません。まずサーバを停止してから、ファイルの名前を変更し、そして、サーバを再起動してから新規のログ ファイルを作成します。

MySQL 5.1.12 から、ランタイムで一般クエリ ログを無効化できるようになりました。

SET GLOBAL general_log = 'OFF';

ログを無効化した状態で、コマンドラインなどを使用して、ログ ファイルの名前を外部的に変更します。そして、ログを再び有効化します。

SET GLOBAL general_log = 'ON';

このやり方は、どのプラットフォームでも使用でき、サーバの再起動は不要です。

Copyright c 1997, 2010, Oracle and/or its affiliates. All rights reserved. Legal Notices
Top / Previous / Next / Up / Table of Contents
© 2010, Oracle Corporation and/or its affiliates

無料CGI PHPスクリプト | 新着情報スクリプト | 営業日カレンダー | PHPマニュアル | MySQLマニュアル | PEARマニュアル

Copyright (c) 2010 jmcodex.com All rights reserved.