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

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

примечание

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

Описание сценария

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

Восстановление выполняется в первую указанную директорию:

  • директорию, переданную при вызове copywala restore через флаг -d\|–destination <archive uri>;
  • либо директорию, заданную в конфигурационном файле copywala.yaml в значении параметра restore_data_path.
Важно

При восстановлении резервной копии командой copywala restore дополнительные файлы из CWL-архива не восстанавливаются и игнорируются. Для их извлечения используйте отдельную команду copywala cwl extra-files extract.

работа в режиме direct_io

Режим direct_io позволяет работать напрямую с памятью приложения, тем самым повышая производительность за счет исключения дополнительного этапа кеширования.

Параметр read_direct_io включает чтение данных из архива в режиме direct_io. Применяется только при восстановлении из локальной копии.

restore_policy:
read_direct_io: false

Предусловие

Перед восстановлением данных из РК убедитесь, что агентское приложение зарегистрировано либо прошла успешная инициализация приложения.

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

Пользователь инициирует восстановление резервной копии через CLI copywala командой copywala restore <archive uri or path>.

Справка по команде copywala restore

Описание:

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

Синтаксис:

copywala restore <archive uri or path> [flags]

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

  • <archive uri or path> – путь к CWL-архиву резервной копии из которой требуется восстановить данные.

  • Если резервная копия содержит табличные пространства (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. Использование флага позволяет выполнять восстановление табличных пространств с изменением их расположения без предварительного ручного создания целевых каталогов.
--cpuprofile <path to file>Включает сбор профиля использования CPU и сохраняет результаты в указанный файл (<path to file>) для последующего анализа производительности
-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"

Флаг --dry-run осуществляет проверку корректности конфигурационного файла и возможность восстановления из заданной резервной копии:

$ copywala restore s2://srv-48-72:29509/test6_0199190e-d195-712e-8ae4-0b90ced58552/backups/2025-09-05-17-30_01991a49-7aad-7b70-90a5-ec790e0dfcf2_delta_00000008000000130000002C_from_000000050000001300000019.cwl -d /mnt/backup/testrestore/restore_latest_92894 s2://srv-48-72:29509 -t /tmp/tblspc123=/tmp/tblspc5 --dry-run
2025-09-08 10:14:09.144 INF copywala develop (06b496d) compiled at 2025-09-05_06:54:40
2025-09-08 10:14:10.147 WRN run command in dry run mode (without actually restoring data)
2025-09-08 10:14:10.376 INF restore source uri: s2://srv-48-72:29509/test6_0199190e-d195-712e-8ae4-0b90ced58552/backups/2025-09-05-17-30_01991a49-7aad-7b70-90a5-ec790e0dfcf2_delta_00000008000000130000002C_from_000000050000001300000019.cwl?ssl=true
2025-09-08 10:14:10.444 INF restore destination uri: local-fs:///mnt/backup/testrestore/restore_latest_92894
2025-09-08 10:14:10.647 INF inferring parent backup for given backup test6_0199190e-d195-712e-8ae4-0b90ced58552/backups/2025-09-05-17-30_01991a49-7aad-7b70-90a5-ec790e0dfcf2_delta_00000008000000130000002C_from_000000050000001300000019.cwl
2025-09-08 10:14:10.716 INF parent backup test6_0199190e-d195-712e-8ae4-0b90ced58552/backups/2025-09-05-12-05_0199191f-cfa2-7313-85b7-12fa85de248d_full_000000050000001300000019.cwl inferred
2025-09-08 10:14:10.844 INF restoring delta backup, with following restore chain: [test6_0199190e-d195-712e-8ae4-0b90ced58552/backups/2025-09-05-17-30_01991a49-7aad-7b70-90a5-ec790e0dfcf2_delta_00000008000000130000002C_from_000000050000001300000019.cwl test6_0199190e-d195-712e-8ae4-0b90ced58552/backups/2025-09-05-12-05_0199191f-cfa2-7313-85b7-12fa85de248d_full_000000050000001300000019.cwl]
2025-09-08 10:14:10.897 INF dry-run mode successfully completed

Если проверка прошла успешно, инициируйте восстановление через CLI copywala командой copywala restore <путь к архиву с РК>.

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

  • Не существует папка для указанного табличного пространства:

        $ copywala restore s2://srv-48-72:29509/test6_0199190e-d195-712e-8ae4-0b90ced58552/backups/2025-09-05-17-30_01991a49-7aad-7b70-90a5-ec790e0dfcf2_delta_00000008000000130000002C_from_000000050000001300000019.cwl -d /mnt/backup/testrestore/restore_latest_92894 s2://srv-48-72:29509 -t /tmp/tblspc123=/tmp/tblspc5 --dry-run
    2025-09-08 10:14:00.116 INF copywala develop (06b496d) compiled at 2025-09-05_06:54:40
    2025-09-08 10:14:00.144 WRN run command in dry run mode (without actually restoring data)
    2025-09-08 10:14:00.447 INF restore source uri: s2://srv-48-72:29509/test6_0199190e-d195-712e-8ae4-0b90ced58552/backups/2025-09-05-17-30_01991a49-7aad-7b70-90a5-ec790e0dfcf2_delta_00000008000000130000002C_from_000000050000001300000019.cwl?ssl=true
    2025-09-08 10:14:00.671 INF restore destination uri: local-fs:///mnt/backup/testrestore/restore_latest_92894
    2025-09-08 10:14:00.713 ERR failed to init restore components err="stat /tmp/tblspc5: no such file or directory"
  • Папка, в которую производится восстановление, не пустая:

        $ copywala restore s2://srv-48-72:29509/test6_0199190e-d195-712e-8ae4-0b90ced58552/backups/2025-09-05-17-30_01991a49-7aad-7b70-90a5-ec790e0dfcf2_delta_00000008000000130000002C_from_000000050000001300000019.cwl -d /mnt/backup/testrestore/restore_latest_92894 s2://srv-48-72:29509 -t /tmp/tblspc123=/tmp/tblspc5 --dry-run
    2025-09-08 10:11:39.176 INF copywala develop (06b496d) compiled at 2025-09-05_06:54:40
    2025-09-08 10:11:39.344 WRN run command in dry run mode (without actually restoring data)
    2025-09-08 10:11:39.447 INF restore source uri: s2://srv-48-72:29509/test6_0199190e-d195-712e-8ae4-0b90ced58552/backups/2025-09-05-17-30_01991a49-7aad-7b70-90a5-ec790e0dfcf2_delta_00000008000000130000002C_from_000000050000001300000019.cwl?ssl=true
    2025-09-08 10:11:39.531 INF restore destination uri: local-fs:///mnt/backup/testrestore/restore_latest_32934
    2025-09-08 10:11:39.671 ERR failed to init restore components err="can't restore to non-empty directory /mnt/backup/testrestore/restore_latest_32934"

Результат

В результате выполнения команды будет выведен прогресс и результат выполнения восстановления данных из резервной копии в заданную директорию:

$ copywala restore backups/dbmain_019938e4-d1f8-7958-973a-0a90dc6bae88/backups/2025-09-17-12-18_019956f8-4544-75b2-8929-b62b27dc69b2_full_000000030000000200000069.cwl -d test-data -t /home/postgres/tbl1=restore-tbl1
2025-09-17 12:22:18.144 INF copywala develop (e09c970) compiled at 2025-09-11_08:54:11
2025-09-17 12:22:18.447 INF restore source uri: local-fs:///home/postgres/backups/dbmain_019938e4-d1f8-7958-973a-0a90dc6bae88/backups/2025-09-17-12-18_019956f8-4544-75b2-8929-b62b27dc69b2_full_000000030000000200000069.cwl
2025-09-17 12:22:18.576 INF restore destination uri: local-fs:///home/postgres/test-data
2025-09-17 12:22:18.644 INF number of parallel workers workers_no=4
2025-09-17 12:22:18.747 INF page checksums verification disabled package=cwl
2025-09-17 12:22:19.176 INF reading will be performed sequentially package=cwl
2025-09-17 12:22:19.244 INF restore progress processed_data_size=45534026 data_size=438489926 wal_size=16777216
2025-09-17 12:22:19.447 INF restore progress processed_data_size=99872282 data_size=438489926 wal_size=16777216
2025-09-17 12:22:19.576 INF restore progress processed_data_size=166456858 data_size=438489926 wal_size=16777216
2025-09-17 12:22:19.644 INF restore progress processed_data_size=233041434 data_size=438489926 wal_size=16777216
2025-09-17 12:22:19.647 INF restore progress processed_data_size=289607194 data_size=438489926 wal_size=16777216
2025-09-17 12:22:19.776 INF restore progress processed_data_size=366210586 data_size=438489926 wal_size=16777216
2025-09-17 12:22:19.844 INF restore progress processed_data_size=414289434 data_size=438489926 wal_size=16777216
2025-09-17 12:22:19.947 INF restore progress processed_data_size=468662057 data_size=438489926 wal_size=16777216
2025-09-17 12:22:19.976 INF finished reading parts package=cwl
2025-09-17 12:22:19.991 INF updating tablespace_map file package=cwl

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

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

  • У пользователя нет прав на запись данных в заданную директорию.
  • У пользователя нет прав на чтение файла с РК.
  • У пользователя недостаточно свободного места на диске для выполнения восстановления РК.