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

Удаление устаревших WAL-файлов

примечание

Исполнять сценарий необходимо от имени пользователя postgres.

Команда copywala retention clean-outdated-wals предназначена для независимого удаления устаревших WAL-файлов без привязки к политике хранения резервных копий. В отличие от команды copywala retention clean-outdated-backups, которая работает с политикой хранения и опционально удаляет WAL-файлы через флаг --delete-wals, данная команда используется исключительно для удаления WAL-файлов.

Команда определяет самую старую резервную копию в хранилище и удаляет все WAL-файлы, предшествующие start_lsn_wal_file_name этой копии. Если резервных копий не найдено, удалить WAL-файлы можно только принудительно, передав флаг --force-delete-all-wals-if-no-backups. В таком случае будут удалены все имеющиеся в хранилище WAL-файлы.

примечание

Команда удаляет только WAL-файлы. Служебные файлы .backup и .history, расположенные в директории хранилища WAL, не удаляются.

Последовательность выполнения​

Инициируйте удаление устаревших WAL-файлов через CLI copywala командой copywala retention clean-outdated-wals (ознакомьтесь со справкой по команде ниже).

Справка по команде copywala retention clean-outdated-wals

Описание:

Команда удаляет устаревшие WAL-файлы из хранилища, указанного в параметре wal_destination_uri конфигурационного файла copywala.yaml. Это позволяет освободить место в хранилище, сохранив только те WAL-файлы, которые нужны для восстановления оставшихся резервных копий.

примечание

Команда удаляет только WAL-файлы. Служебные файлы .backup и .history, расположенные в директории хранилища WAL, не удаляются.

Алгоритм работы команды

  1. Команда определяет самую старую (по наименьшему значению start_lsn) резервную копию в хранилище (по параметру backup_destination_uri).

  2. Если старая копия найдена, в хранилище WAL-файлов выбираются все WAL-файлы, предшествующие start_lsn_wal_file_name самой старой копии. Из списка исключается сам WAL-файл, указанный в start_lsn_wal_file_name.

  3. Если резервных копий не найдено:

    • Без флага --force-delete-all-wals-if-no-backups — удаление не выполняется, выводится сообщение:

      cannot find the oldest postgres backup; enable --force-delete-all-wals-if-no-backups flag to delete all WAL files
    • С флагом --force-delete-all-wals-if-no-backups — удаляются все WAL-файлы в хранилище. В выводе будет сообщение:

      oldest postgres backup not found; delete all wals
      <N> WAL files deleted

Синтаксис:

copywala retention clean-outdated-wals [flags]

Обязательные параметры:

Нет.

Опциональные параметры:

[flags] – доступны следующие флаги:

ФлагОписание
-h|--helpПоказать справку по команде
-c|--config <path to copywala config>Использовать конфигурационный файл, отличный от файла по умолчанию: /etc/pbr/copywala.yaml
--dry-runЗапуск команды в «тестовом режиме»: выводится информация о WAL-файлах, которые были бы удалены при обычном выполнении команды (без флага --dry-run). Фактическое удаление не выполняется
--force-delete-all-wals-if-no-backupsПринудительное удаление всех WAL-файлов, если в хранилище не осталось ни одной резервной копии

Результат​

  • Если найдена самая старая резервная копия, будут удалены WAL-файлы, предшествующие ее первому WAL-файлу. В CLI выводятся сообщения:

    remove wal files before <start_lsn_wal_file_name> wal
    <N> WAL files deleted
  • Если в хранилище нет WAL-файлов для удаления:

    nothing to clean in WAL storage
  • Если резервных копий не найдено и флаг --force-delete-all-wals-if-no-backups не указан:

    cannot find the oldest postgres backup; enable --force-delete-all-wals-if-no-backups flag to delete all WAL files
  • Если резервных копий не найдено, но указан флаг --force-delete-all-wals-if-no-backups, все WAL-файлы будут удалены:

    oldest postgres backup not found; delete all wals
    <N> WAL files deleted
  • При использовании флага --dry-run фактическое удаление не выполняется. В CLI выводится количество WAL-файлов, которые были бы удалены:

    <N> WAL files will be deleted
    dry-run completed: outdated WALs detected, no files removed

Исключительные сценарии​

  • Нет прав для чтения директории с резервными копиями.
  • Нет прав для чтения директории с WAL-файлами.
  • Нет прав для удаления WAL-файлов.
  • Не удалось установить подключение к хранилищу резервных копий (backup_destination_uri).
  • Не удалось установить подключение к хранилищу WAL-файлов (wal_destination_uri).