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
コメント