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; - удалите больше не нужные файлы из архива директории.