Перейти к основному содержимому

pg_archivecleanup

примечание

Эта страница переведена при помощи нейросети GigaChat.

pg_archivecleanup — очищает архивные файлы WAL PostgreSQL.

Синтаксис

pg_archivecleanup [option ...] archivelocation oldestkeptwalfile

Описание

pg_archivecleanup предназначен для использования в качестве команды очистки архивных файлов WAL в настройках резервного сервера. Подробнее об этом описано в разделе «Резервные серверы с передачей журналов». Также pg_archivecleanup можно использовать как самостоятельную программу для очистки архивных файлов WAL.

Для настройки резервного сервера с использованием pg_archivecleanup, добавьте следующую строку в файл конфигурации postgresql.conf:

archive_cleanup_command = 'pg_archivecleanup archivelocation %r'

где archivelocation — это каталог, из которого необходимо удалить файлы сегментов WAL.

При использовании в рамках команды archive_cleanup_command, все файлы WAL, которые логически предшествуют значению аргумента %r, будут удалены из archivelocation. Это минимизирует количество файлов для хранения, при этом обеспечивая возможность перезапуска после сбоя. Использование этой команды оправдано, если archivelocation — это временный архив для конкретного резервного сервера, но не подходит, когда archivelocation предназначен для длительного хранения WAL или если несколько резервных серверов восстанавливаются из одного и того же архива.

Когда pg_archivecleanup используется как автономная программа, все файлы WAL, предшествующие oldestkeptwalfile, будут удалены из archivelocation. В этом случае, если указывается файл с расширениями .partial или .backup, то будет использован только префикс имени файла в качестве oldestkeptwalfile. Это позволяет удалить все файлы WAL, архивированные до определенного резервного копирования без ошибок. Например, команда:

pg_archivecleanup -d archive 000000010000003700000010.00000020.backup

удалит все файлы, старше имени WAL-файла 000000010000003700000010, как показано ниже:

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 существуют следующие параметры командной строки:

-b
--clean-backup-history
Удалять также файлы истории резервных копий.
-d
--debug
Выводит подробную отладочную информацию в stderr.
-n
--dry-run
Выводит имена файлов, которые должны быть удалены, в stdout (не выполняя удаление).
-V
--version
Выводит версию pg_archivecleanup и завершается.
-x extension
--strip-extension=расширение
Указывает расширение, которое будет удалено из всех имен файлов до принятия решения об удалении определенных файлов. Это полезно для очистки архивов, сжатых программой сжатия, когда в имени файлов добавляется соответствующее расширение, например, -x .gz.
-?
--help
Показывает справку о параметрах командной строки утилиты pg_archivecleanup и завершается.

Переменные окружения

PG_COLOR указывает, использовать ли цвет в диагностических сообщениях. Возможные значения — always, auto и never.

Примечания

pg_archivecleanup поддерживается на серверах PostgreSQL версии 8.0 и выше в автономном режиме и, начиная с версии 9.0, при использовании в качестве значения archive_cleanup_command.

Утилита написана на языке C и имеет легко модифицируемый исходный код благодаря выделенным участкам для пользовательских доработок.

Примеры

В системах Linux или Unix можно использовать команду:

archive_cleanup_command = 'pg_archivecleanup -d /mnt/standby/archive %r 2>>cleanup.log'

где архивный каталог физически расположен на резервном сервере, так что archive_command получает доступ к нему через NFS, но файлы являются локальными для резервного сервера. Это позволит:

  • создать отладочный вывод в cleanup.log;
  • удалите больше не нужные файлы из архива директории.