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

BACKUP

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

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

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

BACKUP — это асинхронная операция. Вы можете проверить статус задачи BACKUP с помощью SHOW BACKUP или отменить задачу BACKUP с помощью CANCEL BACKUP. Вы можете просмотреть информацию о снимке с помощью SHOW SNAPSHOT.

ВНИМАНИЕ

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

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

В версиях ранее v1.5.2 пользователи с привилегией admin_priv могут выполнять эту операцию. В более поздних версиях для резервного копирования конкретного объекта пользователи должны иметь привилегию REPOSITORY на уровне системы и привилегию 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;

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

BACKUP SNAPSHOT <db_name>.<snapshot_name>
TO <repository_name>
[ ON ( <table_name> [ PARTITION ( <partition_name> [, ...] ) ]
[, ...] ) ]
[ PROPERTIES ("key"="value" [, ...] ) ]

Параметры

ПараметрОписание
db_nameИмя базы данных, в которой хранятся данные для резервного копирования.
snapshot_nameУкажите имя для снимка данных. Глобально уникальное.
repository_nameИмя репозитория. Вы можете создать репозиторий с помощью CREATE REPOSITORY.
ONИмя таблиц для резервного копирования. Если этот параметр не указан, создается резервная копия всей базы данных.
PARTITIONИмя партиций для резервного копирования. Если этот параметр не указан, создается резервная копия всей таблицы.
PROPERTIESСвойства снимка данных. Допустимые ключи:
  • type: Тип резервного копирования. В настоящее время поддерживается только полное резервное копирование FULL. По умолчанию: FULL.
  • timeout: Тайм-аут задачи. Единица измерения: секунды. По умолчанию: 86400.

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

-- Резервное копирование метаданных внешнего каталога.
BACKUP { ALL EXTERNAL CATALOGS | EXTERNAL CATALOG[S] (<catalog_name> [, ...]) }
[ DATABASE <db_name> ] SNAPSHOT [<db_name>.]<snapshot_name>
TO <repository_name>
[ PROPERTIES ("key"="value" [, ...] ) ]

-- Резервное копирование баз данных, таблиц, партиций, материализованных представлений, логических представлений или UDF.

BACKUP [ DATABASE <db_name> ] SNAPSHOT [<db_name>.]<snapshot_name>
TO <repository_name>
[ ON ( backup_object [, ...] )]
[ PROPERTIES ("key"="value" [, ...] ) ]

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

Параметры

ПараметрОписание
ALL EXTERNAL CATALOGSСоздает резервную копию метаданных всех внешних каталогов.
catalog_nameИмя внешнего каталога(ов), которые необходимо скопировать.
DATABASE db_nameИмя базы данных, к которой принадлежит объект(ы) или снимок. Вы можете указать либо DATABASE <db_name>, либо <db_name>..
db_name.Имя базы данных, к которой принадлежит объект(ы) или снимок. Вы можете указать либо DATABASE <db_name>, либо <db_name>..
snapshot_nameИмя снимка данных. Глобально уникальное.
repository_nameИмя репозитория. Вы можете создать репозиторий с помощью CREATE REPOSITORY.
ONОбъект для резервного копирования. Если этот параметр не указан, создается резервная копия всей базы данных.
table_nameИмя таблицы(таблиц) для резервного копирования.
mv_nameИмя материализованного представления(представлений) для резервного копирования.
view_nameИмя логического представления(представлений) для резервного копирования.
udf_nameИмя UDF(UDF-ов) для резервного копирования.
PARTITIONИмя партиций для резервного копирования. Если этот параметр не указан, создается резервная копия всей таблицы.
PROPERTIESСвойства снимка данных. Допустимые ключи:
  • type: Тип резервного копирования. В настоящее время поддерживается только полное резервное копирование FULL. По умолчанию: FULL.
  • timeout: Тайм-аут задачи. Единица измерения: секунды. По умолчанию: 86400.

Примеры

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

Пример 1: Резервное копирование базы данных example_db в репозиторий example_repo.

BACKUP SNAPSHOT example_db.snapshot_label1
TO example_repo
PROPERTIES ("type" = "full");

Пример 2: Резервное копирование таблицы example_tbl в example_db в example_repo.

BACKUP SNAPSHOT example_db.snapshot_label2
TO example_repo
ON (example_tbl);

Пример 2: Резервное копирование партиций p1 и p2 таблицы example_tbl и таблицы example_tbl2 в example_db в example_repo.

BACKUP SNAPSHOT example_db.snapshot_label3
TO example_repo
ON(
example_tbl PARTITION (p1, p2),
example_tbl2
);

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

Пример 1: Резервное копирование базы данных.

BACKUP DATABASE sr_hub SNAPSHOT sr_hub_backup TO test_repo;

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

-- Резервное копирование одной таблицы.
BACKUP DATABASE sr_hub SNAPSHOT sr_member_backup
TO test_repo
ON (TABLE sr_member);

-- Резервное копирование нескольких таблиц.
BACKUP DATABASE sr_hub SNAPSHOT sr_core_backup
TO test_repo
ON (TABLE sr_member, TABLE sr_pmc);

-- Резервное копирование всех таблиц.
BACKUP DATABASE sr_hub SNAPSHOT sr_all_backup
TO test_repo
ON (ALL TABLES);

Пример 3: Резервное копирование партиции(партиций) в таблице.

-- Резервное копирование одной партиции.
BACKUP DATABASE sr_hub SNAPSHOT sr_par_backup
TO test_repo
ON (TABLE sr_member PARTITION (p1));

-- Резервное копирование нескольких партиций.
BACKUP DATABASE sr_hub SNAPSHOT sr_par_backup
TO test_repo
ON (TABLE sr_member PARTITION (p1,p2,p3));

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

-- Резервное копирование одного материализованного представления.
BACKUP DATABASE sr_hub SNAPSHOT sr_mv1_backup
TO test_repo
ON (MATERIALIZED VIEW sr_mv1);

-- Резервное копирование нескольких материализованных представлений.
BACKUP DATABASE sr_hub SNAPSHOT sr_mv2_backup
TO test_repo
ON (MATERIALIZED VIEW sr_mv1, MATERIALIZED VIEW sr_mv2);

-- Резервное копирование всех материализованных представлений.
BACKUP DATABASE sr_hub SNAPSHOT sr_mv3_backup
TO test_repo
ON (ALL MATERIALIZED VIEWS);

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

-- Резервное копирование одного логического представления.
BACKUP DATABASE sr_hub SNAPSHOT sr_view1_backup
TO test_repo
ON (VIEW sr_view1);

-- Резервное копирование нескольких логических представлений.
BACKUP DATABASE sr_hub SNAPSHOT sr_view2_backup
TO test_repo
ON (VIEW sr_view1, VIEW sr_view2);

-- Резервное копирование всех логических представлений.
BACKUP DATABASE sr_hub SNAPSHOT sr_view3_backup
TO test_repo
ON (ALL VIEWS);

Пример 6: Резервное копирование UDF(UDF-ов) в базе данных.

-- Резервное копирование одного UDF.
BACKUP DATABASE sr_hub SNAPSHOT sr_udf1_backup
TO test_repo
ON (FUNCTION sr_udf1);

-- Резервное копирование нескольких UDF.
BACKUP DATABASE sr_hub SNAPSHOT sr_udf2_backup
TO test_repo
ON (FUNCTION sr_udf1, FUNCTION sr_udf2);

-- Резервное копирование всех UDF.
BACKUP DATABASE sr_hub SNAPSHOT sr_udf3_backup
TO test_repo
ON (ALL FUNCTIONS);

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

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