число файлов в каталоге pg_xlog (WAL файлы)

grufos
Дата: 28.05.2015 16:19:41
Есть ли возможность как-то регулировать число файлов в каталоге pg_xlog (WAL файлы).
Сейчас например у меня там лежат 52 файла. (довольно внушительный размер 16*52 = 832 Мб)
hot_standby = on
archive_mode = on
wal_level = hot_standby
archive_command = 'if exist archive_active.txt (copy /V /B /Y %p C:\\Backup\\PostgreSQL\\WAL\\%f)'
archive_timeout = 0
checkpoint_segments = 20
checkpoint_timeout = 5min
wal_keep_segments = 10

В каталоге БД есть триггер-файл archive_active.txt
Это всё создавалось с целью тестирования бэкапа кластера (pg_basebackup.exe).
Сервер 1 и slave сервера нет и никогда не был настроен.
Таким образом настроено обычное архивирование всего кластера, но во время простоя сервера нет и копирования файлов, так как сервер ничего не делает (тестовый сервер).
Если я начинаю нагружать... например vacuum... то начинается копирование в архив с последующим удалением файла из pg_xlog и происходит смещение по циферкам в файлах, но их количество в целом остается постоянным ~50 файлов.
Если я удаляю триггер файл archive_active.txt то эти файлы начинают ротироваться постгресом, но их число всё также постоянно.
Такое количество файлов появилось постепенно, в результате моих экспериментов.

Пробовал во время простоя выдать команды (во время простоя сервера)
select pg_start_backup('hot_backup',true);
select pg_stop_backup();
при этом 1 файл копируется в архив, но создается новый :).

Как теперь уменьшить их число в ротации?
Какие есть best практики для управления размером каталога pg_xlog?
Alexius
Дата: 28.05.2015 17:02:51
grufos,

50 файлов это совсем немного. это в общем-то контролируется по большей части checkpoint_segments и checkpoint_completion_target ну и wal_keep_segments (хотя в случае реплик бывает что wal'ов больше из-за редких chekpoint на мастере):

 "максимальное" число wal = (2 + checkpoint_completion_target) * checkpoint_segments + 1


1ГБ как-то не жалко должно быть под WAL.
grufos
Дата: 28.05.2015 17:08:15
Alexius,

в данном случае я хотел создать акцент не на самом размере, а на том как можно этим размером управлять.
у меня
checkpoint_completion_target = 0.9
получаем:
(2+0.9)*20 + 1 = 59
все сходится. Даже немного не дотягивает.
Спасибо за пояснение.
Тема закрыта.