SOFTELメモ Developer's blog

MySQLのログローテーション

2022/05/20 MySQL

問題

MySQLのスローログや一般クエリログが肥大化してきたのでローテーションしたいです。

答え

Linuxならmvでファイルをリネームして、flush-logsする。

コマンドの場合

$ cd mysqlのデータディレクトリ
$ mv slow.log slow.old
$ mysqladmin flush-logs

SQLの場合

$ cd mysqlのデータディレクトリ
$ mv slow.log slow.old
$ mysql
mysql> FLUSH SLOW LOGS;

一般クエリログなら GENERAL LOGS、スローログなら SLOW LOGS、エラーログなら ERROR LOGS。

MySQLはリネームしてもinodeが同じファイルをつかみ続けているので、リネーム時点ではリネーム後のファイルにログが出力され続ける。

flushすることで現在のログファイルを閉じて、新しいログファイルに切り替わる。

参考

https://dev.mysql.com/doc/refman/5.6/ja/log-file-maintenance.html

関連するメモ

コメント