Управление политиками хранения резервных копий
Исполнять сценарий необходимо от имени пользователя postgres.
Описание сценария
Политики хранения используются для автоматического управления жизненным циклом резервных копий: определения копий, которые необходимо сохранить, и удаления устаревших резервных копий.
Механизм политик хранения применяется только к резервным копиям, расположенным в локальном хранилище.
Последовательность выполнения
При работе с политиками хранения доступны следующие операции:
| Операция | Описание |
|---|---|
| Настройка политики хранения | Создание и привязка политики к директории с резервными копиями |
| Просмотр политик хранения | Получение списка настроенных политик |
| Временная защита резервной копии от удаления | Исключение выбранной копии из процесса автоматического удаления |
| Удаление устаревших резервных копий | Удаление копий, не соответствующих условиям политики |
Перейдите к описанию нужной операции для получения более подробной информации и инструкции по выполнению.
Настройка политики хранения
Политика применяется к директории, в которую сохраняются резервные копии. Из конфигурационного файла извлекается значение backup_destination_uri, которое объединяется с instance_name, хранящимся в специальном файле, формируя путь вида <backup_destination_uri/instance_name>. Именно эта директория получает соответствующую политику хранения. Заданная политика сохраняется в служебной базе данных pbra_db в таблице pbr_retention_policies.
Инициируйте настройку политики хранения через CLI copywala командой:
$ copywala retention policy set [--max-full-backups | максимальное количество РК][--retention-period | максимальный интервал]
Справка по команде copywala retention policy set
Описание:
Команда применяет политику хранения к директории резервных копий, определяя сроки хранения и условия удаления.
Политика хранения поддерживает два основных режима:
-
Хранить фиксированное число полных резервных копий:
Флаг:
--max-full-backups=N, гдеN– число полных РК, которые необходимо хранить.Используется для ограничения общего количества полных резервных копий. Полные копии выбираются по принципу новизны: сохраняются наиболее поздние по времени создания. Вместе с полными копиями сохраняются все дочерние дельта-копии.
-
Хранить резервные копии, позволяющие восстанавливать данные за установленное количество дней:
Флаг:
--retention-period=Kd, гдеK– количество дней, за которые необходимо обеспечить возможность восстановления данных.Применяется для обеспечения возможности полного восстановления на любой момент времени в пределах указанного периода. Все резервные копии, чьи поля завершения (
finish_time) попадают в указанный интервал, остаются неприкосновенными, даже если начало (start_time) выходит за пределы окна. Если в указанное временное окно попадает дельта-копия, чья родительская РК (полная или дельта) не попала в это окно, родительская копия все равно остается защищенной от удаления.
Эти механизмы работают совместно: если политика ограничивает общее количество полных копий (max-full-backups), но некоторые из них входят в диапазон удерживаемых по критерию временных окон (retention-period), то приоритет отдается временной политике, и соответствующие копии останутся, даже если превышают лимит полных копий.
Например, если имеется три резервные копии, одна из которых входит в окно восстановления (retention-period), а максимальная разрешенная глубина хранения полных копий равна одной (max-full-backups=1), то сохранится лишь та копия, которая находится в временном интервале восстановления, а остальные две будут удалены.
Важно понимать:
-
Все резервные копии старше указанного числа дней (
retention-period) автоматически удаляются. -
Из оставшихся резервных копий сохраняется только указанное количество полных резервных копий (
max-full-backups):- Если число полных резервных копий меньше либо равно количеству, указанному в
max-full-backups, ничего удалено не будет. - Если полное количество резервных копий больше установленного ограничения (
max-full-backups), полные РК (самые старые) будут удалены.
- Если число полных резервных копий меньше либо равно количеству, указанному в
Если один из флагов в команде отсутствует, его значение принимается равным нулю, и соответствующее значение в политике (при условии, что политика уже была создана ранее) будет обновлено. Например, после вызова команды с параметром --retention-period=0, параметр максимума дней хранения сбросится до нуля, и резервные копии, сделанные за последние шесть дней, перестанут считаться нужными и будут удалены при следующем сеансе очистки.
Синтаксис:
copywala retention policy set [flags]
Обязательные параметры:
Должен быть указан минимум один из флагов: --max-full-backups <number of backups> или --retention-period <d (days)/ h (hours)/ s (seconds)>.
Опциональные параметры:
[flags] – доступны следующие флаги:
| Флаг | Описание |
|---|---|
-h|--help | Показать справку по команде |
-c|--config <path to copywala config> | Использовать конфигурационный файл, отличный от файла по умолчанию: /etc/pbr/copywala.yaml |
--max-full-backups <number of backups> | Задает количество полных резервных копий, сохраняемых в рамках политики хранения. Все связанные с ними дельта-копии также будут сохранены |
--retention-period <d (days)/ h (hours)/ s (seconds)> | Задает временной интервал хранения, в течение которого будут храниться резервные копии |
Результат
По завершении выполнения команды будет выведено уведомление о том, что новая политика успешно применена.
Исключительные сценарии
Будет выведено соответствующее сообщение для случаев:
- Не удалось установить подключение к целевой базе данных.
- Неверный формат строки, определяющей временной интервал защиты.
Просмотр политик хранения
Просмотр пользователем списка политик хранения резервных копий, расположенных в служебной базе данных pbra_db в таблице pbr_retention_policies.
Запросите список политик хранения резервных копий через CLI copywala командой: copywala retention policy show (ознакомьтесь со справкой по команде ниже).
Справка по команде copywala retention policy show
Описание:
Выводит список политик хранения резервных копий в виде таблицы.
Синтаксис:
copywala retention policy show [flags]
Обязательные параметры:
Нет.
Опциональные параметры:
[flags] – доступны следующие флаги:
| Флаг | Описание |
|---|---|
-h|--help | Показать справку по команде |
-c|--config <path to copywala config> | Использовать конфигурационный файл, отличный от файла по умолчанию: /etc/pbr/copywala.yaml |
Результат
В результате выполнения команды будет выведено сообщение, содержащее действующую политику хранения резервных копий конкретно для выбранного экземпляра БД:
| id | location uri | max-full-backups | retention-period |
|--------------------------------------|-------------------------------------------------------------------------|------------------|--------------------|
| 019715e5-a1ec-70c4-9a31-753362d26f75 | local-fs:///path/to/backups/dbmain_01988a12-06bf-7f0b-87f8-e290972fe614 | 4 | 8 |
Исключительные сценарии
- Не удалось установить подключение к целевой базе данных.
- Не удалось загрузить конфигурационный файл.
Временная защита резервной копии от удаления
Команда добавляет указанную резервную копию в перечень исключений из политики хранения, действующей на директорию, в которой расположена данная копия, на установленный промежуток времени. Таким образом, если в стандартных условиях данная РК удаляется ввиду несоответствия условиям политики, эта команда временно блокирует ее удаление, обеспечивая защиту копии от дальнейших чисток. Все родительские копии, от которых зависит данная закрепленная копия, также будут закреплены. При этом для выбранной резервной дельта-копии дочерние дельта-копии не получат статус закрепления.
Инициируйте Временная защита резервной копии от удаления через CLI copywala командой copywala retention backup set (ознакомьтесь со справкой по команде ниже).
Справка по команде copywala retention backup set
Описание:
Временно исключает указанную резервную копию (и связанные с ней родительские копии) из политики хранения, предотвращая ее удаление в процессе очистки.
Синтаксис:
copywala retention backup set <archive uri> [flags]
Обязательные параметры:
<archive uri> – путь к CWL-архиву резервной копии из которой требуется восстановить данные.
Если в команде используется URI, указывающий подключение к DDBoost через S2, его необходимо обязательно заключать в двойные кавычки.
Это требование связано с тем, что URI содержит символ &, который интерпретируется Bash как оператор фонового запуска команды.
Ниже приведен пример для команды copywala cwl info:
copywala cwl info "s2://<s2-host>/<ddboost-storage-unit>/path/in/ddboost/storage/unit?driver=ddboost&data_domain_host=<ddboost-host>"
Опциональные параметры:
[flags] – доступны следующие флаги:
| Флаг | Описание |
|---|---|
-h|--help | Показать справку по команде |
-c|--config <path to copywala config> | Использовать конфигурационный файл, отличный от файла по умолчанию: /etc/pbr/copywala.yaml |
--retention-protection <protection time> | Временной интервал защиты резервной копии от удаления согласно политике хранения, например: 1d (1 день), 20h (20 часов). Для снятия защиты резервной копии и возможности ее удаления передайте флаг --retention-protection=0. |
Результат
По завершении выполнения команды выводится уведомление о том, что правило успешно установлено:
backup is protected until <date>
Исключительные сценарии
Будет выведено соответствующее сообщение для случаев:
- Не удалось установить подключение к целевой базе данных.
- Неверный формат строки, определяющей временной интервал защиты.
Удаление резервных копий, не соответствующих политике хранения
Удаление РК выполняется через CLI copywala командой copywala retention clean-outdated-backups. Алгоритм работы команды:
- Извлекаются значения параметров:
backup_destination_uriиз конфигурационного файлаcopywala.yaml;instance_nameиз файла/etc/pbr/pbr.agent.id(или из переопределенного файла, если он был изменен).
- По этим данным в служебной базе данных
pbra_dbв таблицеpbr_retention_policiesопределяется политика хранения для данного хоста. - Проверяется таблица резервных копий, из которой выбираются копии, находящиеся в указанной директории.
- На основе метаданных РК команда удаляет РК, не подходящие под политику хранения.
Если резервные копии были удалены без применения механизма политики хранения Copywala (retention policy), после удаления выполните инвентаризацию (copywala backups inventory). Это необходимо для актуализации данных о резервных копиях в базе данных.
Инициируйте удаление резервных копий через CLI copywala командой copywala retention clean-outdated-backups (ознакомьтесь со справкой по команде ниже).
Справка по команде copywala retention clean-outdated-backups
Описание:
Удаляет резервные копии, не соответствующие заданной политике и срокам хранения, обеспечивая актуальность данных и освобождение места в хранилище.
Синтаксис:
copywala retention clean-outdated-backups [flags]
Обязательные параметры:
Нет.
Опциональные параметры:
[flags] – доступны следующие флаги:
| Флаг | Описание |
|---|---|
-h|--help | Показать справку по команде |
-c|--config <path to copywala config> | Использовать конфигурационный файл, отличный от файла по умолчанию: /etc/pbr/copywala.yaml |
--dry-run | Проверка корректности конфигурационного файла и возможности восстановления из заданной резервной копии |
Результат
В результате выполнения команды будут удалены резервные копии, которые не соответствуют заданной политике хранения, и появится сообщение:
successfully cleaned outdated backups
Если политика хранения не задана или задана, но по ней нет резервных копий для удаления, выводится сообщение:
nothing to clean for given uri <путь к очищаемой папке>
Исключительные сценарии
- Нет прав для удаления РК.
- Не удалось установить подключение к целевой базе данных.
- Если информация о резервной копии присутствует в базе данных и по политике такая копия подлежит удалению, но сама физическая копия в хранилище отсутствует, то возникнет ошибка.
- Если ранее для папки с резервными копиями не была назначена никакая политика хранения, ни одна резервная копия, расположенная в этой директории, не будет удалена. Вместо этого будет выдано информационное сообщение о том, что политика для данной папки не найдена.
Результат
Выполнены необходимые действия по управлению политиками хранения резервных копий.