Перейти к основному содержимому
Версия: 2.0.x

RESTORE

Selena поддерживает резервное копирование и восстановление следующих объектов:

  • Внутренние базы данных, таблицы (всех типов и стратегий partitioning) и partition
  • Метаданные внешних catalog (поддерживается начиная с v1.5.2)
  • Синхронные материализованные представления и асинхронные материализованные представления
  • Логические представления (поддерживается начиная с v1.5.2)
  • Пользовательские функции (поддерживается начиная с v1.5.2)
подсказка

Обзор резервного копирования и восстановления см. в руководстве по резервному копированию и восстановлению.

RESTORE - это асинхронная операция. Вы можете проверить статус задания RESTORE с помощью SHOW RESTORE или отменить задание RESTORE с помощью CANCEL RESTORE.

ВНИМАНИЕ

  • Shared-data cluster Selena не поддерживают BACKUP и RESTORE данных.
  • В каждой базе данных одновременно может выполняться только одно задание BACKUP или RESTORE. В противном случае Selena возвращает ошибку.

Требования к привилегиям

В версиях ранее v1.5.2 пользователи с привилегией admin_priv могут выполнять эту операцию. В версиях v1.5.2 и более поздних, чтобы выполнить резервное копирование определенного объекта, пользователи должны иметь привилегию REPOSITORY на уровне System и привилегию EXPORT для соответствующей таблицы или всех таблиц в соответствующей базе данных. Например:

  • Предоставление роли разрешения на экспорт данных из указанной таблицы.

    GRANT REPOSITORY ON SYSTEM TO ROLE backup_tbl;
    GRANT EXPORT ON TABLE <table_name> TO ROLE backup_tbl;
  • Предоставление роли разрешения на экспорт данных из всех таблиц в указанной базе данных.

    GRANT REPOSITORY ON SYSTEM TO ROLE backup_db;
    GRANT EXPORT ON ALL TABLES IN DATABASE <database_name> TO ROLE backup_db;
  • Предоставление роли разрешения на экспорт данных из всех таблиц во всех базах данных.

    GRANT REPOSITORY ON SYSTEM TO ROLE backup;
    GRANT EXPORT ON ALL TABLES IN ALL DATABASES TO ROLE backup;

Синтаксис, совместимый с более ранними версиями

RESTORE SNAPSHOT <db_name>.<snapshot_name>
FROM <repository_name>
[ ON ( <table_name> [ PARTITION ( <partition_name> [, ...] ) ]
[ AS <table_alias>] [, ...] ) ]
PROPERTIES ("key"="value", ...)

Параметры

ПараметрОписание
db_nameИмя базы данных, в которую восстанавливаются данные.
snapshot_nameИмя снимка данных.
repository_nameИмя репозитория.
ONИмя таблиц для восстановления. Если этот параметр не указан, восстанавливается вся база данных.
PARTITIONИмя partition для восстановления. Если этот параметр не указан, восстанавливается вся таблица. Вы можете просмотреть имя partition с помощью SHOW PARTITIONS.
PROPERTIESСвойства операции RESTORE. Допустимые ключи:
  • backup_timestamp: Временная метка резервной копии. Обязательно. Вы можете просмотреть временные метки резервных копий с помощью SHOW SNAPSHOT.
  • replication_num: Указывает количество replica для восстановления. По умолчанию: 3.
  • meta_version: Этот параметр используется только как временное решение для восстановления данных, резервная копия которых была создана более ранней версией Selena. Последняя версия резервных данных уже содержит meta version, и вам не нужно его указывать.
  • timeout: Тайм-аут задачи. Единица: секунда. По умолчанию: 86400.

Синтаксис, поддерживаемый начиная с v1.5.2

-- Восстановление метаданных внешних catalog.
RESTORE SNAPSHOT [<db_name>.]<snapshot_name> FROM <repository_name>
{ ALL EXTERNAL CATALOGS | EXTERNAL CATALOG[S] <catalog_name>[, EXTERNAL CATALOG[S] <catalog_name> ...] [ AS <alias> ] }
[ DATABASE <db_name_in_snapshot> [AS <target_db>] ]
[ PROPERTIES ("key"="value" [, ...] ) ]

-- Восстановление баз данных, таблиц, partition, материализованных представлений, логических представлений или UDF.
RESTORE SNAPSHOT [<db_name>.]<snapshot_name> FROM <repository_name>
[ DATABASE <db_name_in_snapshot> [AS <target_db>] ]
[ ON ( restore_object [, ...] ) ]
[ PROPERTIES ("key"="value" [, ...] ) ]

restore_object ::= [
{ ALL TABLE[S] | TABLE[S] <table_name>[, TABLE[S] <table_name> ...] [AS <alias>] } |
{ ALL MATERIALIZED VIEW[S] | MATERIALIZED VIEW[S] <mv_name>[, MATERIALIZED VIEW[S] <mv_name> ...] [AS <alias>] } |
{ ALL VIEW[S] | VIEW[S] <view_name>[, VIEW[S] <view_name> ...] [AS <alias>] } |
{ ALL FUNCTION[S] | FUNCTION[S] <udf_name>[, FUNCTION[S] <udf_name> ...] [AS <alias>] } |
<table_name> PARTITION (<partition_name>[, ...]) [AS <alias>] ]

Параметры

ПараметрОписание
db_name.Имя базы данных, в которую восстанавливается объект(ы) или снимок в целевом cluster. Если база данных не существует, система создаст ее. Вы можете указать либо AS <target_db>, либо <db_name>..
snapshot_nameИмя снимка данных.
repository_nameИмя репозитория.
ALL EXTERNAL CATALOGSВосстанавливает метаданные всех внешних catalog.
catalog_nameИмя внешних catalog, которые необходимо восстановить.
DATABASE db_name_in_snapshotИмя базы данных, к которой принадлежал объект(ы) или снимок при резервном копировании в исходном cluster.
AS target_dbИмя базы данных, в которую восстанавливается объект(ы) или снимок в целевом cluster. Если база данных не существует, система создаст ее. Вы можете указать либо AS <target_db>, либо <db_name>..
ONОбъект для восстановления. Если этот параметр не указан, восстанавливается вся база данных.
table_nameИмя таблицы(таблиц) для восстановления.
mv_nameИмя материализованного представления(представлений) для восстановления.
view_nameИмя логического представления(представлений) для восстановления.
udf_nameИмя UDF для восстановления.
PARTITIONИмя partition для восстановления. Если этот параметр не указан, восстанавливается вся таблица.
AS aliasУстанавливает новое имя для восстанавливаемого объекта в целевом cluster.
PROPERTIESСвойства операции RESTORE. Допустимые ключи:
  • backup_timestamp: Временная метка резервной копии. Обязательно. Вы можете просмотреть временные метки резервных копий с помощью SHOW SNAPSHOT.
  • replication_num: Указывает количество replica для восстановления. По умолчанию: 3.
  • meta_version: Этот параметр используется только как временное решение для восстановления данных, резервная копия которых была создана более ранней версией Selena. Последняя версия резервных данных уже содержит meta version, и вам не нужно его указывать.
  • timeout: Тайм-аут задачи. Единица: секунда. По умолчанию: 86400.

Примеры

Примеры с синтаксисом, совместимым с более ранними версиями

Пример 1: Восстанавливает таблицу backup_tbl из снимка snapshot_label1 из репозитория example_repo в базу данных example_db, временная метка резервной копии - 2018-05-04-16-45-08. Восстанавливает одну replica.

RESTORE SNAPSHOT example_db.snapshot_label1
FROM example_repo
ON ( backup_tbl )
PROPERTIES
(
"backup_timestamp"="2018-05-04-16-45-08",
"replication_num" = "1"
);

Пример 2: Восстанавливает partition p1 и p2 таблицы backup_tbl из snapshot_label2 и таблицу backup_tbl2 из example_repo в базу данных example_db, переименовывая backup_tbl2 в new_tbl. Временная метка резервной копии - 2018-05-04-17-11-01. По умолчанию восстанавливает три replica.

RESTORE SNAPSHOT example_db.snapshot_label2
FROM example_repo
ON(
backup_tbl PARTITION (p1, p2),
backup_tbl2 AS new_tbl
)
PROPERTIES
(
"backup_timestamp"="2018-05-04-17-11-01"
);

Примеры с синтаксисом, поддерживаемым начиная с v1.5.2

Пример 1: Восстановление базы данных.

-- Восстанавливает базу данных с ее исходным именем.
RESTORE SNAPSHOT sr_hub_backup
FROM test_repo
DATABASE sr_hub
PROPERTIES("backup_timestamp" = "2024-12-09-10-25-58-842");

-- Восстанавливает базу данных с новым именем.
RESTORE SNAPSHOT sr_hub_backup
FROM test_repo
DATABASE sr_hub AS sr_hub_new
PROPERTIES("backup_timestamp" = "2024-12-09-10-25-58-842");

Пример 2: Восстановление таблицы(таблиц) в базе данных.

-- Восстанавливает одну таблицу с ее исходным именем.
RESTORE SNAPSHOT sr_member_backup
FROM test_repo
DATABASE sr_hub
ON (TABLE sr_member)
PROPERTIES ("backup_timestamp" = "2024-12-09-10-52-10-940");

-- Восстанавливает одну таблицу с новым именем.
RESTORE SNAPSHOT sr_member_backup
FROM test_repo
DATABASE sr_hub AS sr_hub_new
ON (TABLE sr_member AS sr_member_new)
PROPERTIES ("backup_timestamp" = "2024-12-09-10-52-10-940");

-- Восстанавливает несколько таблиц.
RESTORE SNAPSHOT sr_core_backup
FROM test_repo
DATABASE sr_hub
ON (TABLE sr_member, TABLE sr_pmc)
PROPERTIES ("backup_timestamp" = "2024-12-09-10-52-10-940");

-- Восстанавливает все таблицы.
RESTORE SNAPSHOT sr_all_backup
FROM test_repo
DATABASE sr_hub
ON (ALL TABLES);

-- Восстанавливает одну таблицу из всех таблиц.
RESTORE SNAPSHOT sr_all_backup
FROM test_repo
DATABASE sr_hub
ON (TABLE sr_member)
PROPERTIES ("backup_timestamp" = "2024-12-09-10-52-10-940");

Пример 3: Восстановление partition в таблице.

-- Восстанавливает одну partition.
RESTORE SNAPSHOT sr_par_backup
FROM test_repo
DATABASE sr_hub
ON (TABLE sr_member PARTITION (p1))
PROPERTIES ("backup_timestamp" = "2024-12-09-10-52-10-940");

-- Восстанавливает несколько partition.
RESTORE SNAPSHOT sr_par_backup
FROM test_repo
DATABASE sr_hub
ON (TABLE sr_member PARTITION (p1,p2))
PROPERTIES ("backup_timestamp" = "2024-12-09-10-52-10-940");

Пример 4: Восстановление материализованного представления(представлений) в базе данных.

-- Восстанавливает одно материализованное представление.
RESTORE SNAPSHOT sr_mv1_backup
FROM test_repo
DATABASE sr_hub
ON (MATERIALIZED VIEW sr_mv1)
PROPERTIES ("backup_timestamp" = "2024-12-09-10-52-10-940");

-- Восстанавливает несколько материализованных представлений.
RESTORE SNAPSHOT sr_mv2_backup
FROM test_repo
DATABASE sr_hub
ON (MATERIALIZED VIEW sr_mv1, MATERIALIZED VIEW sr_mv2)
PROPERTIES ("backup_timestamp" = "2024-12-09-10-52-10-940");

-- Восстанавливает все материализованные представления.
RESTORE SNAPSHOT sr_mv3_backup
FROM test_repo
DATABASE sr_hub
ON (ALL MATERIALIZED VIEWS)
PROPERTIES ("backup_timestamp" = "2024-12-09-10-52-10-940");

-- Восстанавливает одно из всех материализованных представлений.
RESTORE SNAPSHOT sr_mv3_backup
FROM test_repo
DATABASE sr_hub
ON (MATERIALIZED VIEW sr_mv1)
PROPERTIES ("backup_timestamp" = "2024-12-09-10-52-10-940");

Пример 5: Восстановление логического представления(представлений) в базе данных.

-- Восстанавливает одно логическое представление.
RESTORE SNAPSHOT sr_view1_backup
FROM test_repo
DATABASE sr_hub
ON (VIEW sr_view1)
PROPERTIES ("backup_timestamp" = "2024-12-09-10-52-10-940");

-- Восстанавливает несколько логических представлений.
RESTORE SNAPSHOT sr_view2_backup
FROM test_repo
DATABASE sr_hub
ON (VIEW sr_view1, VIEW sr_view2)
PROPERTIES ("backup_timestamp" = "2024-12-09-10-52-10-940");

-- Восстанавливает все логические представления.
RESTORE SNAPSHOT sr_view3_backup
FROM test_repo
DATABASE sr_hub
ON (ALL VIEWS)
PROPERTIES ("backup_timestamp" = "2024-12-09-10-52-10-940");

-- Восстанавливает одно из всех логических представлений.
RESTORE SNAPSHOT sr_view3_backup
FROM test_repo
DATABASE sr_hub
ON (VIEW sr_view1)
PROPERTIES ("backup_timestamp" = "2024-12-09-10-52-10-940");

Пример 6: Восстановление UDF в базе данных.

-- Восстанавливает одну UDF.
RESTORE SNAPSHOT sr_udf1_backup
FROM test_repo
DATABASE sr_hub
ON (FUNCTION sr_udf1)
PROPERTIES ("backup_timestamp" = "2024-12-09-10-52-10-940");

-- Восстанавливает несколько UDF.
RESTORE SNAPSHOT sr_udf2_backup
FROM test_repo
DATABASE sr_hub
ON (FUNCTION sr_udf1, FUNCTION sr_udf2)
PROPERTIES ("backup_timestamp" = "2024-12-09-10-52-10-940");

-- Восстанавливает все UDF.
RESTORE SNAPSHOT sr_udf3_backup
FROM test_repo
DATABASE sr_hub
ON (ALL FUNCTIONS)
PROPERTIES ("backup_timestamp" = "2024-12-09-10-52-10-940");

-- Восстанавливает одну из всех UDF.
RESTORE SNAPSHOT sr_udf3_backup
FROM test_repo
DATABASE sr_hub
ON (FUNCTION sr_udf1)
PROPERTIES ("backup_timestamp" = "2024-12-09-10-52-10-940");

Примечания по использованию

  • Выполнение операций резервного копирования и восстановления на глобальном уровне, уровне базы данных, таблицы и partition требует различных привилегий.
  • В каждой базе данных одновременно может выполняться только одно задание BACKUP или RESTORE. В противном случае Selena возвращает ошибку.
  • Поскольку задания BACKUP и RESTORE занимают много ресурсов вашего cluster Selena, вы можете выполнять резервное копирование и восстановление данных, когда ваш cluster Selena не сильно загружен.
  • Selena не поддерживает указание алгоритмов сжатия данных для резервного копирования данных.
  • Поскольку данные копируются как снимки, данные, загруженные при создании снимка, не включаются в снимок. Поэтому, если вы загружаете данные в старый cluster после создания снимка и до завершения задания RESTORE, вам также необходимо загрузить данные в cluster, в который восстанавливаются данные. Рекомендуется загружать данные в оба cluster параллельно в течение некоторого времени после завершения миграции данных, а затем переносить приложение в новый cluster после проверки правильности данных и сервисов.
  • До завершения задания RESTORE вы не можете выполнять операции с таблицей, которую необходимо восстановить.
  • Таблицы Primary Key не могут быть восстановлены в cluster Selena версии ранее v1.5.2.
  • Вам не нужно создавать таблицу для восстановления в новом cluster перед восстановлением. Задание RESTORE автоматически создает ее.
  • Если существует таблица с дублирующимся именем с таблицей, которую необходимо восстановить, Selena сначала проверяет, совпадает ли схема существующей таблицы со схемой таблицы, которую необходимо восстановить. Если схемы совпадают, Selena перезаписывает существующую таблицу данными из снимка. Если схема не совпадает, задание RESTORE завершается неудачно. Вы можете либо переименовать таблицу для восстановления с помощью ключевого слова AS, либо удалить существующую таблицу перед восстановлением данных.
  • Если задание RESTORE перезаписывает существующую базу данных, таблицу или partition, перезаписанные данные не могут быть восстановлены после того, как задание переходит в фазу COMMIT. Если задание RESTORE завершается неудачно или отменяется в этот момент, данные могут быть повреждены и недоступны. В этом случае вы можете только снова выполнить операцию RESTORE и дождаться завершения задания. Поэтому мы рекомендуем не восстанавливать данные с перезаписью, если вы не уверены, что текущие данные больше не используются. Операция перезаписи сначала проверяет согласованность метаданных между снимком и существующей базой данных, таблицей или partition. Если обнаружено несоответствие, операция RESTORE не может быть выполнена.
  • В настоящее время Selena не поддерживает резервное копирование и восстановление конфигурационных данных, связанных с учетными записями пользователей, привилегиями и группами ресурсов.
  • В настоящее время Selena не поддерживает резервное копирование и восстановление отношений Colocate Join между таблицами.