pg_archivecleanup
pg_archivecleanup — вычистить файлы архивов WAL PostgreSQL
Синтаксис
pg_archivecleanup
[параметр
...] расположение_архива
старейший_сохраняемый_файл
Описание
Утилита pg_archivecleanup предназначена для использования в качестве archive_cleanup_command
для удаления старых файлов WAL на резервном сервере (см. Раздел 25.2). pg_archivecleanup можно использовать и как отдельную программу для выполнения тех же действий.
Чтобы использовать pg_archivecleanup на резервном сервере, добавьте эту строку в файл конфигурации recovery.conf
:
archive_cleanup_command = 'pg_archivecleanup расположение_архива
%r'
Здесь расположение_архива
определяет каталог, из которого должны удаляться файлы сегментов WAL.
Вызываемая в качестве archive_cleanup_command, эта программа просматривает расположение_архива
и удаляет все файлы WAL, логически предшествующие значению аргумента %r
. Целью этой операции является сокращение числа сохраняемых файлов без потери возможности восстановления при перезапуске. Такой вариант использования уместен, когда расположение_архива
указывает на область рабочих файлов конкретного резервного сервера, но не когда расположение_архива
— каталог с архивом WAL для долговременного хранения, или когда несколько резервных серверов восстанавливают записи WAL из одного расположения.
При отдельном использовании этой программы из каталога расположение_архива
будут удалены все файлы WAL, логически предшествующие файлу старейший_сохраняемый_файл
. В этом режиме, если вы укажете имя файла с расширением .partial
или .backup
, старейший_сохраняемый_файл
будет определяться по имени без расширения. Благодаря такой интерпретации расширения .backup
будут корректно удалены все файлы WAL, заархивированные до определённой базовой копии. Например, следующая команда удалит все файлы старее файла WAL с именем 000000010000003700000010
:
pg_archivecleanup -d archive 000000010000003700000010.00000020.backup pg_archivecleanup: keep WAL file "archive/000000010000003700000010" and later pg_archivecleanup: removing file "archive/00000001000000370000000F" pg_archivecleanup: removing file "archive/00000001000000370000000E"
pg_archivecleanup рассчитывает на то, что расположение_архива
доступно для чтения и записи пользователю, владеющему серверным процессом.
Параметры
pg_archivecleanup принимает следующие аргументы командной строки:
-d
Выводить подробные отладочные сообщения в
stderr
.-n
Вывести имена файлов, которые должны быть удалены, в
stdout
(не выполняя удаление).-V
--version
Вывести версию pg_archivecleanup и завершиться.
-x
расширение
При отдельном использовании этой программы укажите расширение, которое будет убрано из имён файлов до принятия решения об удалении определённых файлов. Это обычно полезно для очистки файлов архивов, которые сжимаются для хранения и получают расширение, задаваемое программой сжатия. Например:
-x .gz
.-?
--help
Вывести справку об аргументах командной строки pg_archivecleanup и завершиться.
Замечания
Программа pg_archivecleanup рассчитана на работу с PostgreSQL 8.0 и новее как отдельная утилита, а также с PostgreSQL 9.0 и новее как команда очистки архива.
Программа pg_archivecleanup написана на C; её исходный код легко поддаётся модификации (он содержит секции, предназначенные для изменения при надобности)
Примеры
В системах Linux или Unix можно использовать команду:
archive_cleanup_command = 'pg_archivecleanup -d /mnt/standby/archive %r 2>>cleanup.log'
Предполагается, что каталог архива физически располагается на резервном сервере, так что команда archive_command
обращается к нему по NFS, но для резервного сервера эти файлы локальные. Эта команда будет:
выводить отладочную информацию в
cleanup.log
удалять ставшие ненужными файлы из каталога архива