pg_archivecleanup#
pg_archivecleanup
pg_archivecleanup — очистка архивных файлов WAL Tantor SE
Синтаксис
pg_archivecleanup
[option
...] archivelocation
oldestkeptwalfile
Описание
pg_archivecleanup предназначен для использования в качестве
archive_cleanup_command
для очистки архивов WAL-файлов при
работе в режиме резервного сервера (см. Раздел 26.2).
pg_archivecleanup также может использоваться как самостоятельная программа для
очистки архивов WAL-файлов.
Чтобы настроить резервный сервер для использования pg_archivecleanup, добавьте следующую строку в его конфигурационный файл postgresql.conf
:
archive_cleanup_command = 'pg_archivecleanup archivelocation
%r'
где archivelocation
- это каталог, из которого следует удалить файлы сегментов WAL.
Когда используется внутри archive_cleanup_command, все WAL-файлы, логически предшествующие значению аргумента %r
, будут удалены из archivelocation
. Это минимизирует количество файлов, которые необходимо сохранить, при сохранении возможности перезапуска после сбоя. Использование этого параметра целесообразно, если archivelocation
является временной областью хранения для данного резервного сервера, но не является долгосрочной областью архивирования WAL или когда несколько резервных серверов восстанавливаются из одного и того же места архивирования.
При использовании в качестве самостоятельной программы все файлы WAL, логически предшествующие
oldestkeptwalfile
, будут удалены из archivelocation
.
В этом режиме, если вы указываете имя файла .partial
или .backup
,
то только префикс файла будет использоваться в качестве
oldestkeptwalfile
. Такая обработка имени файла .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 предполагает, что
archivelocation
- это каталог, доступный для чтения и записи пользователем, владеющим сервером.
Опции
pg_archivecleanup принимает следующие аргументы командной строки:
-d
Выводить много отладочной информации в журнале
stderr
.-n
Выведите имена файлов, которые были бы удалены на
stdout
(выполняется пробный запуск).-V
--version
Выведите версию pg_archivecleanup и завершите работу.
-x
extension
Предоставьте расширение, которое будет удалено из всех имен файлов перед принятием решения о их удалении. Это обычно полезно для очистки архивов, которые были сжаты во время хранения и, следовательно, имеют расширение, добавленное программой сжатия. Например:
-x .gz
.-?
--help
Показать справку о командной строке для pg_archivecleanup и выйти.
Окружение
Переменная среды PG_COLOR
определяет, следует ли использовать цвет в диагностических сообщениях. Возможные значения: always
, auto
и never
.
Примечания
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
Удалите файлы, которые больше не нужны, из каталога архива.