PostgresqlデータベースをホストしているUbuntuマシンでは、16Gのスペースが/var/lib/postgresql/9.3/main/pg_log
で占められています。どうやら、何ヶ月も前のログファイルも保存されているようです。 disk full
エラーを取り除くために、いくつかを手動で削除しました。毎週古いpostgresqlログを削除する強力な方法は何ですか?このプロセスを自動化するためにpostgresql.conf
でできることはありますか?
現在、私はpostgresql.conf
に以下を持っています:
#log_truncate_on_rotation = off # If on, an existing log file with the
# same name as the new log file will be
# truncated rather than appended to.
# But such truncation only occurs on
# time-driven rotation, not on restarts
# or size-driven rotation. Default is
# off, meaning append to existing files
# in all cases.
#log_rotation_age = 1d # Automatic rotation of logfiles will
# happen after that time. 0 disables.
log_rotation_size = 100MB # Automatic rotation of logfiles will
# happen after that much log output.
# 0 disables.
log_rotation_age
を有効にし、その値を30d
に設定することを考えています。しかし、これは古いログファイルを自動的に削除しますか?
以下の設定を使用できます。
log_truncate_on_rotation = on
log_rotation_age = 1d
log_filename = 'postgresql-%a.log'
log_rotation_size = 0 #just rotate daily
これは、「postgresql-Mon.log」のような名前のログファイルを作成し、ローテーションが発生したときに同じ名前の古いファイルを上書きすることを示しています。
PostgreSQLはログローテーション機能をサポートしていますが、ログ削除機能はサポートしていません。そのため、ユーザーはログを手動で削除するか、logrotate
ユーティリティを使用してログを削除する必要があります。
これが 公式ドキュメント です。