pg_archivecleanup#

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

  • Удалите файлы, которые больше не нужны, из каталога архива.