Перейти к основному содержимому

Экспорт данных

Резервное копирование и восстановление Alibaba cloud OSS

Selena поддерживает резервное копирование данных в alicloud OSS / AWS S3 (или объектное хранилище, совместимое с протоколом S3). Предположим, есть два кластера Selena, а именно кластер DB1 и кластер DB2. Нам нужно создать резервную копию данных в DB1 в alicloud OSS, а затем восстановить их в DB2 при необходимости. Общий процесс резервного копирования и восстановления выглядит следующим образом:

Создание облачного репозитория

Выполните SQL в DB1 и DB2 соответственно:

CREATE REPOSITORY `repository name`
WITH BROKER `broker_name`
ON LOCATION "oss://bucket name/path"
PROPERTIES
(
"fs.oss.accessKeyId" = "xxx",
"fs.oss.accessKeySecret" = "yyy",
"fs.oss.endpoint" = "oss-cn-beijing.aliyuncs.com"
);

a. И DB1, и DB2 должны быть созданы, и имя созданного REPOSITORY должно быть одинаковым. Просмотр репозитория:

SHOW REPOSITORIES;

b. broker_name нужно заполнить именем брокера в кластере. Просмотр BrokerName:

SHOW BROKER;

c. Путь после fs.oss.endpoint не должен содержать имя bucket.

Резервное копирование таблицы данных

Выполните BACKUP таблиц, которые нужно скопировать, в облачный репозиторий в DB1. Выполните SQL в DB1:

BACKUP SNAPSHOT [db_name].{snapshot_name}
TO `repository_name`
ON (
`table_name` [PARTITION (`p1`, ...)],
...
)
PROPERTIES ("key"="value", ...);
PROPERTIES в настоящее время поддерживает следующие свойства:
"type" = "full": указывает, что это полное обновление (по умолчанию).
"timeout" = "3600": тайм-аут задачи. По умолчанию один день. Единица измерения - секунды.

Selena в настоящее время не поддерживает полное резервное копирование базы данных. Нам нужно указать таблицы или разделы для резервного копирования ON (...), и эти таблицы или разделы будут скопированы параллельно.

Просмотр выполняющихся задач резервного копирования (обратите внимание, что одновременно может выполняться только одна задача резервного копирования):

SHOW BACKUP FROM db_name;

После завершения резервного копирования вы можете проверить, существуют ли уже данные резервной копии в OSS (ненужные резервные копии необходимо удалить в OSS):

SHOW SNAPSHOT ON OSS repository name; 

Восстановление данных

Для восстановления данных в DB2 нет необходимости создавать структуру таблицы для восстановления в DB2. Она будет создана автоматически во время операции Restore. Выполните SQL восстановления:

RESTORE SNAPSHOT [db_name].{snapshot_name}
FROMrepository_name``
ON (
'table_name' [PARTITION ('p1', ...)] [AS 'tbl_alias'],
...
)
PROPERTIES ("key"="value", ...);

Просмотр прогресса восстановления:

SHOW RESTORE;