Восстановление данных из резервной копии
Исполнять сценарий необходимо от имени пользователя postgres.
Описание сценария
Инициирование пользователем восстановления данных из резервной копии.
Восстановление выполняется в первую указанную директорию:
- директорию, переданную при вызове
copywala restoreчерез флаг-d\|–destination <archive uri>; - либо директорию, заданную в конфигурационном файле
copywala.yamlв значении параметраrestore_data_path.
При восстановлении резервной копии командой copywala restore дополнительные файлы из CWL-архива не восстанавливаются и игнорируются. Для их извлечения используйте отдельную команду copywala cwl extra-files extract.
Режим 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 - Флаг
--allow-default-tablespaces
Флаг --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"
Флаг --allow-default-tablespaces разрешает использование путей табличных пространств, указанных при создании РК и имеет приоритет перед настройками, задаваемыми через флаг -t|--tablespace-mapping.
Результат
В результате выполнения команды будет выведен прогресс и результат выполнения восстановления данных из резервной копии в заданную директорию:
$ 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
Исключительные сценарии
Будет выведено соответствующее сообщение для случаев:
- У пользователя нет прав на запись данных в заданную директорию.
- У пользователя нет прав на чтение файла с РК.
- У пользователя недостаточно свободного места на диске для выполнения восстановления РК.