Configurar rotado de logs en PostgreSQL en Linux

El rotado de registros o logs es básico en la configuración de un servidor de base de datos como es PostgreSQL. Ya que la información que nos muestren estos ficheros es muy necesaria y si no se configura su rotado pueden dar problemas, como por ejemplo ocupación del sistema de ficheros.

Para modificar la configuración del rotado, debemos editar el correspondiente fichero de configuración de PostgreSQL, generalmente ubicado en /var/lib/pgsql/data/postgresql.conf, igualmente, si tenemos alguna duda, desde la consola de comandos:

psql -U postgres -c 'SHOW config_file'

Las partes más importantes a modificar del fichero son:

  • log_directory = ‘pg_log’ # Directorio donde se escriben los ficheros de registros, puede ser absoluro o relativo.
  • log_filename = ‘postgresql-%a.log # Patrón de nombre de nombre de archivo de reigstro.
  • log_file_mode = 0600 # Modo de creación para archivos de registro, comienza en 0 para utilizar la notación octal.
  • log_truncate_on_rotation = on # Si está activado, un archivo de registro existente con el mismo nombre que el nuevo archivo, será truncado en lugar de anexado.
  • log_rotation_age = 1440 # La rotación automática de los archivos será después de ese tiempo.
  • log_rotation_size = 0 # La rotación automática de los archivos de registro será después de esa salida de registros. Con 0 deshabilita.

Una vez realizados los cambios guardamos. Para que los cambios se apliquen, debemos reiniciar el servicio.

Algunas recomendaciones

  • Para un período de respaldo de solo 24 horas, solo usamos %H: log_filename = ‘postgresql-% H.log’, establece log_rotation_age = 60.
  • Para el período de respaldo de una semana, usa %a-% w: log_filename = ‘postgresql-% a.log’, y configura log_rotation_age = 1440.
  • Para el período de respaldo de un mes, use %d: log_filename = ‘postgresql-% d.log’, y establezca log_rotation_age = 1440.

Fuentes consultadas

Microfocus.com – How to Configure PostgreSQL Log Files Rotation by Size

Stackoverflow.com – Where are my postgres *.conf files?