Удаление устаревших 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, не удаляются.
Алгоритм работы команды
-
Команда определяет самую старую (по наименьшему значению
start_lsn) резервную копию в хранилище (по параметруbackup_destination_uri). -
Если старая копия найдена, в хранилище WAL-файлов выбираются все WAL-файлы, предшествующие
start_lsn_wal_file_nameсамой старой копии. Из списка исключается сам WAL-файл, указанный вstart_lsn_wal_file_name. -
Если резервных копий не найдено:
-
Без флага
--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 deleteddry-run completed: outdated WALs detected, no files removed
Исключительные сценарии
- Нет прав для чтения директории с резервными копиями.
- Нет прав для чтения директории с WAL-файлами.
- Нет прав для удаления WAL-файлов.
- Не удалось установить подключение к хранилищу резервных копий (
backup_destination_uri). - Не удалось установить подключение к хранилищу WAL-файлов (
wal_destination_uri).