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

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

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

Selena поддерживает резервное копирование данных в Alibaba Cloud OSS / AWS S3 (или объектное хранилище, совместимое с протоколом S3). Предположим, есть два cluster Selena, а именно cluster DB1 и cluster DB2. Нам нужно создать резервную копию данных из DB1 в Alibaba Cloud 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 должен содержать имя брокера в cluster. Просмотр BrokerName:

SHOW BROKER;

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

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

Создайте резервную копию таблиц в облачный репозиторий в 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 имя_репозитория;

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

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

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

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

SHOW RESTORE;