BACKUP
Описание
Эта инструкция используется для резервного копирования данных указанной базы данных. Команда выполняется асинхронно. После отправки команды можно проверить ход выполнения с помощью SHOW BACKUP.
Синтаксис
BACKUP SNAPSHOT [<db_name>.]<snapshot_name>
TO `<repository_name>`
[ { ON | EXCLUDE } ]
( <table_name> [ PARTITION ( <partition_name> [, ...] ) ]
[, ...] ) ]
[ PROPERTIES ( "<key>" = "<value>" [ , ... ] )]
Обязательные параметры
1.<db_name>
Имя базы данных, которой принадлежат данные для резервного копирования.
2.<snapshot_name>
Имя снимка данных. Оно должно быть глобально уникальным и не может повторяться.
3.<repository_name>
Имя репозитория. Создать репозиторий можно с помощью CREATE REPOSITORY.
Необязательные параметры
1.<table_name>
Имя таблицы для резервного копирования. Если не указано, будет создана резервная копия всей базы данных.
- Предложение ON задаёт таблицы и разделы, для которых нужно создать резервную копию. Если раздел не указан, по умолчанию копируются все разделы таблицы.
- Предложение EXCLUDE задаёт таблицы и разделы, для которых резервное копирование не требуется. Копируются данные всех разделов всех таблиц этой базы данных, кроме указанной таблицы или раздела.
2.<partition_name>
Имя раздела для резервного копирования. Если не указано, будут скопированы все разделы соответствующей таблицы.
3.[ PROPERTIES ( "<key>" = "<value>" [ , ... ] ) ]
Атрибуты снимка данных в формате <key> = <value>. В настоящее время поддерживаются следующие свойства:
- "type" = "full": указывает на полное обновление (по умолчанию).
- "timeout" = "3600": время ожидания завершения задачи в секундах. По умолчанию составляет один день.
Требования к правам доступа
Пользователь, выполняющий эту команду SQL, должен иметь как минимум следующие права:
| Право | Объект | Примечания |
|---|---|---|
| LOAD_PRIV | USER или ROLE | Эту операцию могут выполнять только пользователи или роли с правом LOAD_PRIV |
Примечания по использованию
- Поддерживается резервное копирование только таблиц типа OLAP.
- В одной и той же базе данных можно выполнять только одну операцию резервного копирования.
- Операция резервного копирования сохраняет базовую таблицу и синхронное материализованное представление указанной таблицы или раздела. При этом копируется только одна реплика. Асинхронное материализованное представление не поддерживается.
- Эффективность резервного копирования: эффективность операции зависит от объёма данных, количества Compute Nodes и количества файлов. Каждый Compute Node, на котором расположен шард копируемых данных, участвует в этапе выгрузки данных при резервном копировании. Чем больше узлов, тем выше эффективность выгрузки. Под объёмом файловых данных здесь понимается только количество шардов и количество файлов в каждом шарде. Большое количество шардов или мелких файлов в них может увеличить время резервного копирования.
Примеры
- Создать полную резервную копию таблицы example_tbl из базы данных example_db в репозитории example_repo:
BACKUP SNAPSHOT example_db.snapshot_label1
TO example_repo
ON (example_tbl)
PROPERTIES ("type" = "full");
- Создать полную резервную копию разделов p1, p2 таблицы example_tbl и таблицы example_tbl2 из базы данных example_db в репозитории example_repo:
BACKUP SNAPSHOT example_db.snapshot_label2
TO example_repo
ON
(
example_tbl PARTITION (p1,p2),
example_tbl2
);
- Создать полную резервную копию всех таблиц базы данных example_db, кроме таблицы example_tbl, в репозитории example_repo:
BACKUP SNAPSHOT example_db.snapshot_label3
TO example_repo
EXCLUDE (example_tbl);
- Создать полную резервную копию таблиц базы данных example_db в репозитории example_repo:
BACKUP SNAPSHOT example_db.snapshot_label3
TO example_repo;