备份与恢复
本文介绍如何备份以及恢复 StarRocks 中的数据,或将数据迁移至新的 StarRocks 集群。
StarRocks 支持将数据以快照文件的形式备份到远端存储系统中,或将备份的数据从远端存储系统恢复至任意 StarRocks 集群。通过这个功能,您可以定期为 StarRocks 集群中的数据进行快照备份,或者将数据在不同 StarRocks 集群间迁移。
StarRocks 支持在以下外部存储系统中备份数据:
- Apache™ Hadoop® (HDFS)集群
- AWS S3
- Google GCS
- 阿里云 OSS
- 腾讯云 COS
- 华为云 OBS
说明
StarRocks 存算分离集群不支持数据备份和恢复。
备份数据
StarRocks 支持以数据库、表、或分区为粒度全量备份数据。
当表的数据量很大时,建议您按分区分别执行,以降低失败重试的代价。如果您需要对数据进行定期备份,建议您在建表时制定动态分区策略,从而可以在后期运维过程中,仅定期备份新增分区中的数据。
创建仓库
仓库用于在远端存储系统中存储备份文件。备份数据前,您需要基于远端存储系统路径在 StarRocks 中创建仓库。您可以在同一集群中创建多个仓库。详细使用方法参阅 CREATE REPOSITORY。
- 在 HDFS 集群中创建仓库
以下示例在 Apache™ Hadoop® 集群中创建仓库 test_repo
。
CREATE REPOSITORY test_repo
WITH BROKER
ON LOCATION "hdfs://<hdfs_host>:<hdfs_port>/repo_dir/backup"
PROPERTIES(
"username" = "<hdfs_username>",
"password" = "<hdfs_password>"
);
-
在 AWS S3 中创建仓库
您可以选择使用 IAM 用户凭证(Access Key 和 Secret Key)、Instance Profile 或者 Assumed Role 作为访问 Amazon S3 的安全凭证。
- 以下示例以 IAM 用户凭证作为安全凭证在 Amazon S3 存储桶
bucket_s3
中创建仓库test_repo
。
CREATE REPOSITORY test_repo
WITH BROKER
ON LOCATION "s3a://bucket_s3/backup"
PROPERTIES(
"aws.s3.access_key" = "XXXXXXXXXXXXXXXXX",
"aws.s3.secret_key" = "yyyyyyyyyyyyyyyyyyyyyyyy",
"aws.s3.region" = "us-east-1"
);- 以下示例以 Instance Profile 作为安全凭证在 Amazon S3 存储桶
bucket_s3
中创建仓库test_repo
。
CREATE REPOSITORY test_repo
WITH BROKER
ON LOCATION "s3a://bucket_s3/backup"
PROPERTIES(
"aws.s3.use_instance_profile" = "true",
"aws.s3.region" = "us-east-1"
);- 以下示例以 Assumed Role 作为安全凭证在 Amazon S3 存储桶
bucket_s3
中创建仓库test_repo
。
CREATE REPOSITORY test_repo
WITH BROKER
ON LOCATION "s3a://bucket_s3/backup"
PROPERTIES(
"aws.s3.use_instance_profile" = "true",
"aws.s3.iam_role_arn" = "arn:aws:iam::xxxxxxxxxx:role/yyyyyyyy",
"aws.s3.region" = "us-east-1"
); - 以下示例以 IAM 用户凭证作为安全凭证在 Amazon S3 存储桶
说明
StarRocks 仅支持通过 S3A 协议在 AWS S3 中创建仓库。因此,当您在 AWS S3 中创建仓库时,必须在
ON LOCATION
参数下将 S3 URI 中的s3://
替换为s3a://
。
- 在 Google GCS 中创建仓库
以下示例在 Google GCS 存储桶 bucket_gcs
中创建仓库 test_repo
。
CREATE REPOSITORY test_repo
WITH BROKER
ON LOCATION "s3a://bucket_gcs/backup"
PROPERTIES(
"fs.s3a.access.key" = "xxxxxxxxxxxxxxxxxxxx",
"fs.s3a.secret.key" = "yyyyyyyyyyyyyyyyyyyy",
"fs.s3a.endpoint" = "storage.googleapis.com"
);
说明
- StarRocks 仅支持通过 S3A 协议在 Google GCS 中创建仓库。 因此,当您在 Google GCS 中创建仓库时,必须在
ON LOCATION
参数下将 GCS URI 的前缀替换为s3a://
。- 请勿在 Endpoint 地址中指定
https
。
- 在阿里云 OSS 中创建仓库
以下示例在阿里云 OSS 存储空间 bucket_oss
中创建仓库 test_repo
。
CREATE REPOSITORY test_repo
WITH BROKER
ON LOCATION "oss://bucket_oss/backup"
PROPERTIES(
"fs.oss.accessKeyId" = "xxxxxxxxxxxxxxxxxxxxxxxxxx",
"fs.oss.accessKeySecret" = "yyyyyyyyyyyyyyyyyyyy",
"fs.oss.endpoint" = "oss-cn-zhangjiakou-internal.aliyuncs.com"
);