qhb_archivecleanup

qhb_archivecleanup - очистка архивных файлов QHB WAL.

Синтаксис

qhb_archivecleanup [option...] archivelocation oldestkeptwalfile

Описание

qhb_archivecleanup предназначен для использования в качестве archive_cleanup_command для очистки файловых архивов WAL при работе в качестве резервного сервера. qhb_archivecleanup также может использоваться как самостоятельная программа для очистки файловых архивов WAL.

Чтобы настроить резервный сервер для использования qhb_archivecleanup, добавьте в файл конфигурации qhb.conf следующую строку:

archive_cleanup_command = 'qhb_archivecleanup archivelocation %r'

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

Важно!!!
Чтобы qhb_archivecleanup использвать как отдельную программу, нужно в файле конфигурации qhb.conf добавить следующие строки:

archive_mode = on;
archive_command = 'test ! -f archivelocation %f && cp %p archivelocation %f';

Это относится только к мастер-серверу, так как именно он передает логи.

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

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

qhb_archivecleanup -d archive 000000010000003700000010.00000020.backup

qhb_archivecleanup:  keep WAL file "archive/000000010000003700000010" and later
qhb_archivecleanup:  removing file "archive/00000001000000370000000F"
qhb_archivecleanup:  removing file "archive/00000001000000370000000E"

qhb_archivecleanup предполагает, что расположение archivelocation является каталогом, доступным для чтения и записи пользователем, владеющим сервером.

Параметры

qhb_archivecleanup принимает следующие аргументы командной строки:

АргументОписание
-dВыводить подробные отладочные сообщения в stderr
-nВывести имена файлов, которые будут удалены в stdout (выполняет пробный запуск).
-V, --versionПоказать версию qhb_archivecleanup и выйти.
-x extensionУказать расширение, которое будет убрано из всех имен файлов, прежде чем принимать решение об их удалении. Это обычно полезно для очистки архивов, которые были сжаты и, следовательно, имеют расширение, добавленное программой сжатия. Например: -x .gz.
-?, --helpПоказать справку об аргументах командной строки qhb_archivecleanup и выйти.

Примеры

В системах Linux или Unix вы можете использовать:

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

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

  • выводить отладочную информацию в cleanup.log
  • удалять ставшие ненужными файлы из каталога архива