😸

MySQLのログについてまとめる

2024/05/27に公開

参考

https://gihyo.jp/dev/serial/01/mysql-road-construction-news/0045

MySQLのログについて

MySQLで出力されるログは以下です。

項目 説明 利用タイミング
エラーログ 起動、停止、SQL実行時にエラーがあった場合に出力 障害時の調査
スロークエリログ 指定(long_query_timeで設定)した時間(秒)で処理が終了しなかった
(タイムアウトしたとき)のSQLと、INDEXを利用しないSQLが保存
運用時の監視対象
一般クエリログ サーバーに接続された場合と、SQLが実行された場合にそのSQLを出力 デバッグ時のみ(本番で出すとパフォーマンス落ちる)
バイナリログ 更新系のSQLを出力 レプリケーションで使うみたい
リレーログ
DDLログ DDLの変更をロギングするらしいが、あまり使えない模様

設定方法(汎用)

my.iniの[mysqld]セクションに記載(それ以外に記載すると無効)

設定の例(Windows環境、一般クエリログ・スロークエリログ・エラーログを設定)

my.ini
[mysqld]
//ログの時間をサーバーにあわせる。「SELECT @@log_timestamps;」「SELECT NOW();」で確認可能
log_timestamps=SYSTEM
//ログ設定
log-output=FILE
general-log=1
general_log_file="C:/aaa/xampp/mysql/logs/general-query.log"
log_error="C:/aaa/xampp/mysql/logs/error.log"
log_error_verbosity=1
slow_query_log=1
slow_query_log_file="C:/aaa/xampp/mysql/logs/slow_query.log"
long_query_time=2

各種ログの設定

全体

項目 説明 設定値
log-output ログの出力先ファイルの種類を設定。
(指定がない場合デフォはFILEなので指定しなくてもいい)
FILE・・・ファイルに出力
TABLE・・・テーブルに出力
NONE・・・どちらにも出力しない
log-output=FILE

一般クエリログ

項目 説明 設定値
general-log 出力の有無を設定 0・・・出力しない
1・・・出力する
general-log=1
general_log_file 出力先 ファイルパス general_log_file="C:/aaa/xampp/mysql/logs/general-query.log"

出力結果

2023-11-11T23:43:32.092762Z     8 Connect root@localhost on *** using SSL/TLS	
2023-11-11T23:43:32.096379Z     8 Query select * from users	
→接続と、selectが出力	

エラーログ

項目 説明 設定値
log_error 出力先 ファイルパス general_log_file="C:/aaa/xampp/mysql/logs/general-query.log"
log_error_verbosity ログレベルを設定 1・・・ERROR
2・・・ERROR、WARNING
3・・・ERROR、WARNING、INFORMATION
log_error_verbosity=1

出力結果

2023-11-11T23:40:52.609135Z 0 [ERROR] [MY-000067] [Server] unknown variable 'logn_query_time=2'.	
my.iniの設定がおかしい場合に出力	

スロークエリログ

項目 説明 設定値
slow_query_log 出力の有無を設定 0・・・出力しない
1・・・出力する
slow_query_log=1
slow_query_log_file 出力先 ファイルパス slow_query_log_file="C:/aaa/xampp/mysql/logs/slow_query.log"
long_query_time 出力するしきい値 long_query_time=2

出力結果

select sleep(5);	
→select sleep(5);を実行した場合	

Discussion