Поиск и восстановление данных из последней резервной копии
Исполнять сценарий необходимо от имени пользователя postgres.
Описание сценария
Сценарий предназначен для обнаружения последней доступной резервной копии, обеспечивая возможность отката к предыдущему стабильному состоянию системы в случае сбоев или неисправностей.
Последовательность выполнения
Инициируйте поиск и восстановление последней РК через CLI copywala командой copywala restore latest (ознакомьтесь со справкой по команде ниже).
Справка по команде copywala restore latest
Описание: Поиск и восстановление данных из последней резервной копии.
Синтаксис:
copywala restore latest [flags]
Обязательные параметры:
Если резервная копия содержит табличные пространства (tablespace), при вызове команды обязательно укажите один из флагов:
| Флаг | Описание |
|---|---|
-t|--tablespace-mapping </old-tablespace=/new-tablespace> | Задает соответствие между путями табличных пространств (tablespace) в резервной копии и их расположением на целевом сервере. Используется для восстановления табличных пространств в другое место. Для нескольких табличных пространств каждое соответствие пути исходного и целевого расположения рекомендуется указывать отдельным флагом -t|--tablespace-mapping. Пример значения: --tablespace-mapping="/pgdata/tablespaces/Tbl_t=/data/tbl_t" |
--allow-default-tablespaces | Использовать пути табличных пространств, сохраненных во время создания резервной копии. Имеет приоритет перед настройками, задаваемыми через флаг -t|--tablespace-mapping |
Если в команде используется 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 |
--allow-default-tablespaces | Использовать пути табличных пространств, сохраненных во время создания резервной копии. Имеет приоритет перед настройками, задаваемыми через флаг -t|--tablespace-mapping |
--auto-create-tablespaces-dirs | Автоматически создает директории назначения для табличных пространств, переданных в флаге -t|--tablespace-mapping. Использование флага позволяет выполнять восстановление табличных пространств с изменением их расположения без предварительного ручного создания целевых каталогов. |
-d|–-destination <archive uri> | Директория, в которую необходимо произвести восстановление |
--dry-run | Проверка корректности конфигурационного файла и возможности восстановления из заданной резервной копии |
-t|--tablespace-mapping </old-tablespace=/new-tablespace> | Задает соответствие между путями табличных пространств (tablespace) в резервной копии и их расположением на целевом сервере. Используется для восстановления табличных пространств в другое место. Для нескольких табличных пространств каждое соответствие пути исходного и целевого расположения рекомендуется указывать отдельным флагом -t|--tablespace-mapping. Пример значения: --tablespace-mapping="/pgdata/tablespaces/Tbl_t=/data/tbl_t" |
Результат
В результате выполнения команды инициируется процесс восстановления, состоящий из двух этапов:
- определение последней доступной резервной копии, подходящей для восстановления;
- запуск процесса построения цепи восстановления, необходимой для приведения системы в рабочее состояние.
Если указанные этапы выполнены успешно, процесс восстановления завершится без ошибок:
finished reading parts
При восстановлении файлов из резервной копии для каждого файла восстанавливается время его последнего изменения (mtime), зафиксированное на момент создания резервной копии.
Исключительные сценарии
Будет выведено соответствующее сообщение для случаев:
-
Отсутствует папка с РК:
2025-09-15 17:00:47.132 ERR failed to select latest backup err="list local backups: read dir: open /home/postgres/backups/dbmain_019938e4-d1f8-7958-973a-0a90dc6bae88/backups: no such file or directory" -
Отсутствует одна из промежуточных дельта-копий в цепочке:
2025-09-15 17:06:36.365 ERR failed to init restore components err="No parent delta backup with backup_id 01994daf-a516-72e2-a78e-c9a583ea306c for /home/postgres/backups/dbmain_019938e4-d1f8-7958-973a-0a90dc6bae88/backups/2025-09-15-17-03_01994daf-b8fb-706f-a893-509c4d8c3377_delta_000000030000000200000001_from_0000000300000001000000FF.cwl." -
Если не задан флаг
--tablespace-mapping, то будет выведено:2025-09-15 17:05:09.243 ERR failed to init restore components err="tablespace mapping not provided for given tablespace /home/postgres/tbl1"