跳到主要内容
版本: 最新版本-3.5

数据导出

阿里云OSS备份和恢复

StarRocks支持将数据备份到阿里云OSS / AWS S3(或与S3协议兼容的对象存储)。假设有两个StarRocks集群,分别是DB1集群和DB2集群。我们需要将DB1中的数据备份到阿里云OSS,然后在必要时将其恢复到DB2。备份和恢复的一般过程如下

创建云仓库

分别在DB1和DB2中执行SQL

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需要填写集群中的broker名称。查看BrokerName

SHOW BROKER;

c. fs.oss.endpoint之后的路径不需要有bucket名称。

备份数据表

在DB1中将要备份的表BACKUP到云仓库。在DB1中执行SQL

BACKUP SNAPSHOT [db_name].{snapshot_name}
TO `repository_name`
ON (
`table_name` [PARTITION (`p1`, ...)],
...
)
PROPERTIES ("key"="value", ...);
PROPERTIES currently supports the following properties:
"type" = "full": indicates that this is a full update (default).
"timeout" = "3600": task timeout. The default is one day. The unit is seconds.

StarRocks目前不支持完整数据库备份。我们需要指定要备份的表或分区ON(...),这些表或分区将被并行备份。

查看正在进行的备份任务(请注意,一次只能执行一个备份任务)

SHOW BACKUP FROM db_name;

备份完成后,您可以检查OSS中是否已经存在备份数据(不需要的备份需要在OSS中删除)

SHOW SNAPSHOT ON OSS repository name; 

数据恢复

对于DB2中的数据恢复,无需在DB2中创建要恢复的表结构。它将在Restore操作期间自动创建。执行restore SQL

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

查看恢复进度

SHOW RESTORE;