Резервное копирование и восстановление данных
В этом разделе описывается, как выполнять резервное копирование и восстановление данных в Selena, а та кже как мигрировать данные в новый cluster Selena.
Selena поддерживает резервное копирование данных в виде снимков во внешнюю систему хранения и восстановление данных в любые cluster Selena.
Начиная с версии v1.5.2, Selena расширила функциональность BACKUP и RESTORE, добавив поддержку большего количества объектов и переработав синтаксис для большей гибкости.
Selena поддерживает следующие внешние системы хранения:
- Apache™ Hadoop® (HDFS) cluster
- AWS S3
- Google GCS
- MinIO
Selena поддерживает резервное копирование следующих объектов:
- Внутренние базы данных, таблицы (всех типов и стратегий партиционирования) и партиции
- Метаданные внешних каталогов (поддерживается с версии v1.5.2)
- Синхронные материализованные представления и асинхронные материализованные представления
- Логические представления (поддерживается с версии v1.5.2)
- Пользовательские функции (поддерживается с версии v1.5.2)
ПРИМЕЧАНИЕ
Cluster Selena с общими данными (shared-data) не поддерживают BACKUP и RESTORE данных.
Создание репозитория
Перед резервным копированием данных необходимо создать репозиторий, который используется для хранения снимков данных во внешней системе хранения. В cluster Selena можно создать несколько репозиториев. Подробные инструкции см. в разделе CREATE REPOSITORY.
- Создание репозитория в HDFS
Следующий пример создаёт репозиторий с именем test_repo в cluster HDFS.
CREATE REPOSITORY test_repo
WITH BROKER
ON LOCATION "hdfs://<hdfs_host>:<hdfs_port>/repo_dir/backup"
PROPERTIES(
"username" = "<hdfs_username>",
"password" = "<hdfs_password>"
);
-
Создание репозитория в AWS S3
Вы можете выбрать учётные данные на основе IAM-пользователя (Access Key и Secret Key), Instance Profile или Assumed Role в качестве метода аутентификации для доступа к AWS S3.
- Следующий пример создаёт репозиторий с именем
test_repoв бакете AWS S3bucket_s3, используя учётные данные на основе IAM-пользователя.
CREATE REPOSITORY test_repo
WITH BROKER
ON LOCATION "s3a://bucket_s3/backup"
PROPERTIES(
"aws.s3.access_key" = "XXXXXXXXXXXXXXXXX",
"aws.s3.secret_key" = "yyyyyyyyyyyyyyyyyyyyyyyy",
"aws.s3.region" = "us-east-1"
);- Следующий пример создаёт репозиторий с именем
test_repoв бакете AWS S3bucket_s3, используя Instance Profile в качестве метода аутентификации.
CREATE REPOSITORY test_repo
WITH BROKER
ON LOCATION "s3a://bucket_s3/backup"
PROPERTIES(
"aws.s3.use_instance_profile" = "true",
"aws.s3.region" = "us-east-1"
);- Следующий пример создаёт репозиторий с именем
test_repoв бакете AWS S3bucket_s3, используя Assumed Role в качестве метода аутентификации.
CREATE REPOSITORY test_repo
WITH BROKER
ON LOCATION "s3a://bucket_s3/backup"
PROPERTIES(
"aws.s3.use_instance_profile" = "true",
"aws.s3.iam_role_arn" = "arn:aws:iam::xxxxxxxxxx:role/yyyyyyyy",
"aws.s3.region" = "us-east-1"
); - Следующий пример создаёт репозиторий с именем
ПРИМЕЧАНИЕ
Selena поддерживает создание репозиториев в AWS S3 только по протоколу S3A. Поэтому при создании репозиториев в AWS S3 необходимо заменить
s3://в URI S3, который передаётся в качестве местоположения репозитория вON LOCATION, наs3a://.
- Создание репозитория в Google GCS
Следующий пример создаёт репозиторий с именем test_repo в бакете Google GCS bucket_gcs.
CREATE REPOSITORY test_repo
WITH BROKER
ON LOCATION "s3a://bucket_gcs/backup"
PROPERTIES(
"fs.s3a.access.key" = "xxxxxxxxxxxxxxxxxxxx",
"fs.s3a.secret.key" = "yyyyyyyyyyyyyyyyyyyy",
"fs.s3a.endpoint" = "storage.googleapis.com"
);
ПРИМЕЧАНИЕ
- Selena поддерживает создание репозиториев в Google GCS только по протоколу S3A. Поэтому при создании репозиториев в Google GCS необходимо заменить префикс в URI GCS, который передаётся в качестве местоположения репозитория в
ON LOCATION, наs3a://.- Не указывайте
httpsв адресе конечной точки.
- Создание репозитория в MinIO
Следующий пример создаёт репозиторий с именем test_repo в бакете MinIO bucket_minio.
CREATE REPOSITORY test_repo
WITH BROKER
ON LOCATION "s3://bucket_minio/backup"
PROPERTIES(
"aws.s3.access_key" = "XXXXXXXXXXXXXXXXX",
"aws.s3.secret_key" = "yyyyyyyyyyyyyyyyy",
"aws.s3.endpoint" = "http://minio:9000"
);
После создания репозитория вы можете проверить его с помощью SHOW REPOSITORIES. После восстановления данных вы можете удалить репозиторий в Selena с помощью DROP REPOSITORY. Однако снимки данных, сохранённые во внешней системе хранения, не могут быть удалены через Selena. Их необходимо удалить вручную во внешней системе хранения.
Резервное копирование данных
После создания репозитория необходимо создать снимок данных и сохранить его во внешнем репозитории. Подробные инструкции см. в разделе BACKUP. BACKUP — это асинхронная операция. Вы можете проверить статус задания BACKUP с помощью SHOW BACKUP или отменить задание BACKUP с помощью CANCEL BACKUP.
Selena поддерживает ПОЛНОЕ резервное копирование на уровне детализации базы данных, таблицы или партиции.
Если в таблице хранится большой объём данных, рекомендуется выполнять резервное копирование и восстановление по партициям. Это позволяет снизить затраты на повторные попытки в случае сбоя задания. Если требуется регулярное резе рвное копирование инкрементных данных, вы можете настроить план партиционирования для таблицы и каждый раз создавать резервные копии только новых партиций.
Резервное копирование базы данных
Выполнение полного BACKUP базы данных создаст резервную копию всех таблиц, синхронных и асинхронных материализованных представлений, логических представлений и UDF в базе данных.
Следующие примеры создают резервную копию базы данных sr_hub в снимке sr_hub_backup и загружают снимок в репозиторий test_repo.
-- Поддерживается с версии v1.5.2.
BACKUP DATABASE sr_hub SNAPSHOT sr_hub_backup
TO test_repo;
-- Совместимо с синтаксисом более ранних версий.
BACKUP SNAPSHOT sr_hub.sr_hub_backup
TO test_repo;