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