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

Поиск и восстановление данных из последней резервной копии

примечание

Исполнять сценарий необходимо от имени пользователя 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

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

Будет выведено соответствующее сообщение для случаев:

  • Отсутствует папка с РК:

    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"