クエリーログでサーバが容量不足に

さくらVPSで使っているDebianのサーバにログインしたところドライブの空き容量が無いと警告が表示された。容量の大きいファイルを検索したところ /var/log/mysql.log35GB になっていた。

契約しているのは50GBのプランで df -h コマンドだと46GBの容量と表示される。つまり容量の7割をmysqlのログファイルで占めていたことになる。このログファイルと不必要なバックアップファイルを5GBほど削除し、整理したところ空き容量ゼロの状態から空き容量38GBに落ち着いた。

原因

  • クエリログの出力が有効になっていた
  • クエリログの出力先が /var/log/mysql.log になっていた
  • /etc/logrotate.d/mysql-server が参照するファイルが /var/log/mysql/mysql.log であったためログファイルがローテートされていなかった

クエリログについては何かのトラブルの調査で出力するように設定して、そのままになっていたのではないかと思っている。基本的に dotdeb のパッケージでインストールした my.cnf をベースに設定していたはずなのでいつの間にか出力先が /var/log/mysql/*.log に変わってログローテートの対象から漏れたのかもしれない。

年末年始でパッケージをアップデートしておこうかと思ってログインして気がついて良かった。パッケージを大きくバージョンアップするときにはパッケージのデフォルトの設定ファイルと現行の設定ファイルを比較すべきだし、そうしていたつもりだが、ログファイルのパスなど機能の動作を変える設定ではないものは見落としがちだ。