SOFTELメモ Developer's blog

会社概要 ブログ 調査依頼 採用情報 ...
技術者募集中

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

関連するメモ

コメント