Может ли внутренний механизм ротации журналов postgres удалять файлы журнала старше определенного времени?


9

Я использую механизм ротации журналов от Posgtres. Я хотел бы удалить файлы журнала старше 30 дней. Как мне получить postgres для этого? Если postgres не поддерживает его, могу ли я настроить logrotate на удаление журналов старше 30 дней?

Мой текущий конфиг:

log_destination = 'stderr'             
logging_collector = on
log_directory = 'pg_log'                
log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log' 
#log_truncate_on_rotation = off 
log_rotation_age = 1440         
log_rotation_size = 0    

Ответы:


5

Я не верю, что механизм ведения журнала Postgres поддерживает эту очистку, но вы совершенно безопасно удаляете старые журналы, используя logrotate или задание cron, если вы не связываетесь с активным файлом журнала, в который пишет Postgres.

Для ведения журнала в Postgres я обычно предпочитаю входить в syslog, и пусть обычные процедуры ротации журналов делают свое дело. Это имеет несколько преимуществ, но два больших из них - это возможность использовать ваши стандартные процедуры ротации журналов (например, logrotate) так же, как вы это делаете для других демонов, и возможность заставить ваш демон syslog отправлять журналы на удаленный хост, если это то, что вы хотите сделать один день.

Другие варианты обсуждаются (хотя и кратко) в разделе 23.3 руководства Postgres .


1

Если вы не используете syslog, вы можете просто запустить следующий скрипт из cron и вызвать его через день.

#!/bin/sh

HOME=/var/lib/pgsql
export HOME
PGDATA=/var/lib/pgsql/9.1/data
export PGDATA

/usr/bin/find $PGDATA/pg_log -type f -ctime +30 -name "*.log" -exec /bin/rm {} \;

Не входя в системный журнал, вы также можете использовать такие инструменты, как pgAdmin или pgFouine для просмотра / анализа журналов базы данных.


pgFouine - это то, что привело меня на этот путь. Вы можете использовать pgFouine из журнала syslog, но это еще не все, что нужно для правильной настройки.
Freiheit
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.