У мене є така проблема: "вертикальний" дистрибутив Linux (Sophos UMT) поставляється з PostgreSQL 9.2 для зберігання його конфігурації. На жаль, з моменту останнього оновлення, схоже, що журнали транзакцій (WAL) деяких екземплярів зростають, не змінюючись ніколи. Це призводить до того, що папка pg_xlog зростає на кілька разів більше, ніж базова папка.
Зараз я перебуваю в делікатній ситуації: через надмірне зростання файлів WAL диск однієї з цих машин (VM) заповниться до понеділка. Я вже відкрив справу підтримки у постачальника, але поки що вони не дуже корисні (вони пропонують нам відновити VM з більшими дисками).
Ця база даних ніколи не створюється резервного копіювання, оскільки програмне забезпечення виконує резервні копії по-іншому (у нього є власна процедура резервного копіювання та надсилає файли резервного копіювання електронною поштою), і я вважаю, що це причина, чому WAF збільшується настільки.
Я боюся, що я далеко не експерт PostgreSQL, тому, швидше за все, я задаю нерозумне або очевидне запитання, але яка процедура вимагає очищення файлів WAL?
В ідеалі я шукаю процедуру, яка дозволить мені виправити ці файли WAL в проблемній системі, щоб придбати собі достатньо часу, щоб отримати постачальника для виправлення кращого виправлення.
Редагувати : За запитом, ось вихід SELECT version();запиту:
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 ряд)
І SELECT name, current_setting(name), source
FROM pg_settings
WHERE source NOT IN ('default', 'override');запит
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)
Правка2
Нарешті ми перевстановили весь сервер (як вимагає підтримка Sophos), але використовуючи попередню версію та великий диск. Мабуть, старша версія використовує набагато менше місця для WAL, ніж нова.
З цікавості я запустив перевірку на версію та параметри pgsql за замовчуванням 7, і я отримав зовсім інші результати:
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
і
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)
Мені здається, що між цими двома версіями було досить багато змін.