2010年3月18日木曜日

MySQLのログいろいろ

スズキです。

下記のように設定すると、エラーログが"/var/log/mysqld.log"に、
一般クエリログが"/var/lib/mysql/general.log"、そして、スロー クエリログが
"/var/lib/mysql/slow_query.log"に出力されるようになります。

--------【my.cnf】--------
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
symbolic-links=0
server-id=<%= ipaddress.split(".")[3] %>
log-bin=<%= hostname %>-bin
log-output=TABLE,FILE
general_log=1
general_log_file=general.log
slow_query_log=1
slow_query_log_file=slow_query.log
long_query_time=0

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
--------

【エラーログ】
mysqldの挙動に関するログです。
--------
100317 23:45:49 [Note] Event Scheduler: Purging the queue. 0 events
100317 23:45:49 [Note] Error reading relay log event: slave SQL thread
was killed
100317 23:45:51 InnoDB: Starting shutdown...
100317 23:45:57 InnoDB: Shutdown completed; log sequence number 0 44233
100317 23:45:57 [Note] /usr/libexec/mysqld: Shutdown complete
--------

【一般クエリログ】
クエリ全般のログです。"general_log=1"で有効にし、
"general_log_file"で出力先を指定します。
--------
100318 0:08:19
194 Connect mon@suz-lab-master-2 on
194 Query set autocommit=1
194 Query SELECT NOW()
194 Quit
--------

【スロークエリログ】
実行時間の遅いクエリに関するログです。"slow_query_log=1"で有効にし、
"slow_query_log_file"で出力先を指定します。
--------
# User@Host: mon[mon] @ suz-lab-master-2 [192.168.11.12]
# Query_time: 0.000143 Lock_time: 0.000000 Rows_sent: 0 Rows_examined: 0
SET timestamp=1268838704;
SHOW SLAVE STATUS;
--------
また、"long_query_time"で出力するログの実行時間の閾値を指定できますが、
上記のように0を指定すると、すべてのクエリが出力されます。

最後に"log-output=TABLE,FILE"に関してですが、
これはログをファイルとテーブルに出力するといった設定です。

ファイルへの出力は、上述した内容なんですが、テーブルへの出力に関しては、
一般クエリログは、mysql.general_logテーブルに、スロークエリログは、
mysql.slow_logテーブルに書きこまれるようになってます。

ログローテートもしなきゃ...

--------
http://www.suz-lab.com

0 コメント: