Tengo el siguiente problema: una distribución Linux "vertical" (Sophos UMT) viene con PostgreSQL 9.2 para almacenar su configuración. Desafortunadamente, desde la última actualización, parece que los registros de transacciones (WAL) de algunas instancias están creciendo sin ser vaciados. Esto hace que la carpeta pg_xlog crezca en un orden de magnitud mayor que la carpeta base.
Ahora estoy en una situación delicada: debido al crecimiento excesivo de los archivos WAL, el disco de una de estas máquinas (una VM) se llenará antes del lunes. Ya he abierto un caso de soporte con el proveedor pero, hasta ahora, no son muy útiles (sugieren que reconstruyamos la VM con discos más grandes).
Esta base de datos nunca se realiza una copia de seguridad porque el software realiza copias de seguridad de una manera diferente (tiene su propio procedimiento de copia de seguridad y envía archivos de copia de seguridad por correo electrónico) y supongo que esta es la razón por la cual los WAF están creciendo tanto.
Me temo que estoy lejos de ser un experto en PostgreSQL, por lo que es muy probable que esté haciendo una pregunta tonta u obvia, pero ¿cuál es el procedimiento para solicitar que se vacíen los archivos WAL?
Idealmente, estoy buscando un procedimiento que me permita vaciar estos archivos WAL en el sistema problemático para ganarme el tiempo suficiente para que el proveedor emita una solución mejor.
Editar : según lo solicitado, aquí está el resultado de la SELECT version();
consulta:
PostgreSQL 9.2.4 on i686-pc-linux-gnu, compiled by gcc (SUSE Linux) 4.3.4 [gcc-4_3-branch revision 152973], 32-bit
(1 fila)
Y la SELECT name, current_setting(name), source
FROM pg_settings
WHERE source NOT IN ('default', 'override');
consulta
hot_standby | on | configuration file
listen_addresses | * | configuration file
log_destination | syslog | configuration file
log_min_duration_statement | -1 | configuration file
log_min_error_statement | error | configuration file
log_min_messages | notice | configuration file
maintenance_work_mem | 512MB | configuration file
max_connections | 300 | configuration file
max_files_per_process | 1000 | configuration file
max_prepared_transactions | 0 | configuration file
max_stack_depth | 2MB | configuration file
max_standby_streaming_delay | 10s | configuration file
max_wal_senders | 10 | configuration file
password_encryption | on | configuration file
pg_stat_statements.max | 1000 | configuration file
pg_stat_statements.save | on | configuration file
pg_stat_statements.track | all | configuration file
pg_stat_statements.track_utility | off | configuration file
port | 5432 | configuration file
random_page_cost | 2 | configuration file
replication_timeout | 1min | configuration file
seq_page_cost | 1 | configuration file
shared_buffers | 512MB | configuration file
shared_preload_libraries | pg_stat_statements | configuration file
ssl | off | configuration file
stats_temp_directory | pg_stat_tmp | configuration file
superuser_reserved_connections | 20 | configuration file
synchronous_commit | local | configuration file
syslog_facility | local0 | configuration file
syslog_ident | postgres | configuration file
temp_buffers | 256MB | configuration file
temp_file_limit | -1 | configuration file
TimeZone | GMT | configuration file
timezone_abbreviations | AlmostAll | configuration file
track_activities | on | configuration file
track_activity_query_size | 4096 | configuration file
track_counts | on | configuration file
track_functions | none | configuration file
track_io_timing | on | configuration file
unix_socket_directory | /var/run/postgresql | configuration file
unix_socket_group | postgres | configuration file
unix_socket_permissions | 0777 | configuration file
update_process_title | on | configuration file
vacuum_defer_cleanup_age | 0 | configuration file
wal_buffers | 16MB | configuration file
wal_keep_segments | 100 | configuration file
wal_level | hot_standby | configuration file
wal_receiver_status_interval | 5s | configuration file
work_mem | 512MB | configuration file
(69 rows)
Edit2
Finalmente reinstalamos todo el servidor (como lo solicitó el soporte de Sophos) pero usando la versión anterior y un disco más grande. Aparentemente, la versión anterior usa mucho menos espacio para el WAL que la nueva.
Por curiosidad, ejecuté la comprobación de la versión y los parámetros pgsql no predeterminados y obtuve resultados bastante diferentes:
PostgreSQL 8.4.14 on i686-pc-linux-gnu, compiled by GCC gcc (SUSE Linux) 4.3.4 [gcc-4_3-branch revision 152973], 32-bit
y
name | current_setting | source
---------------------------------+-----------------+----------------------
autovacuum_analyze_scale_factor | 0.0005 | configuration file
checkpoint_segments | 12 | configuration file
checkpoint_warning | 0 | configuration file
escape_string_warning | off | configuration file
fsync | on | configuration file
listen_addresses | * | configuration file
log_destination | syslog | configuration file
log_timezone | Europe/Zurich | command line
maintenance_work_mem | 1GB | configuration file
max_connections | 300 | configuration file
max_stack_depth | 2MB | environment variable
port | 5432 | configuration file
shared_buffers | 32MB | configuration file
standard_conforming_strings | off | configuration file
syslog_facility | local0 | configuration file
syslog_ident | postgres | configuration file
temp_buffers | 1024 | configuration file
TimeZone | UTC | configuration file
timezone_abbreviations | AlmostAll | configuration file
work_mem | 512MB | configuration file
(20 rows)
Me parece que hubo muchos cambios entre estas dos versiones.