数据导出
阿里云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;