MySQLで実行された全てのSQLを記録する「一般クエリログ」

投稿者 : OSCA

[PR] "東野・岡村の旅猿"で登場したロケ地を紹介するファンサイト「あの場所へ行こう!」はこちら。

 MySQL Server への接続および実行された SQL クエリを全て記憶する「一般クエリログ (General query log)」について本稿では解説します。

一般クエリログとは?

 一般クエリログ (General query log) は、クライアントからの MySQL Server への接続・接続解除の情報、およびクライアントから実行された全ての SQL クエリを出力してくれるログです。 SQL 実行エラーが発生した際に、どのような SQL が実行されたのかを正確に把握するのに役に立ちます。

 MySQL の初期状態では一般クエリログは出力されませんので、出力をさせたい場合には次で述べるような設定が必要です。

設定

 一般クエリログを出力させるためには、設定ファイル my.cnf (Windows版を利用している場合には my.ini) に設定の追加が必要です。 [mysqld] のセクションに以下のように設定します。

[mysqld]
(略)
general_log=1
general_log_file=/var/log/mysql/general-query.log

※ MySQL5.0までは log=/path/to/mysql.log のように log というオプションで出力設定をしていましたが、MySQL5.1からオプションが変更になりました。

 上の例のように general_log オプションで「1」を指定することで出力が有効になり(「0」だと無効)、general_log_file オプションで出力先ファイル名を指定します。

おわりに

 本稿では MySQL のログの一つである「一般クエリログ」について解説しました。 MySQL の運用設計や障害対応の役に立ててください。

MySQL 入門へ戻る

MySQLのトップへ戻る

著者 : OSCA

OSCA

Java, PHP 系のWEBエンジニア。 WEBエンジニア向けコミュニティ「WEBエンジニア勉強会」を主催。 個人として何か一つでも世の中の多くの人に使ってもらえるものを作ろうと日々奮闘中。
@engineer_osca