Экспорт данных
Резервное копирование и восстановление в 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;