备份与恢复
本文介绍如何备份以及恢复 StarRocks 中的数据,或将数据迁移至新的 StarRocks 集群。
StarRocks 支持将数据以快照文件的形式备份到远端存储系统中,或将备份的数据从远端存储系统恢复至任意 StarRocks 集群。通过这个功能,您可以定期为 StarRocks 集群中的数据进行快照备份,或者将数据在不同 StarRocks 集群间迁移。
从 v3.4.0 开始,StarRocks 进一步增强了备份恢复功能,支持了更多对象,并且重构语法以提高灵活性。
StarRocks 支持在以下外部存储系统中备份数据:
- Apache™ Hadoop® (HDFS)集群
- AWS S3
- Google GCS
- 阿里云 OSS
- 腾讯云 COS
- 华为云 OBS
- MinIO
StarRocks 支持备份以下对象:
- 内部数据库、表(所有类型和分区策略)和分区
- External Catalog 的元数据(自 v3.4.0 开始支持)
- 同步物化视图和异步物化视图
- 逻辑视图(自 v3.4.0 开始支持)
- UDF(自 v3.4.0 开始支持)
说明
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.endpoint" = "s3.us-east-1.amazonaws.com"
);- 以下示例以 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"
);
- 在腾讯云 COS 中创建仓库
以下示例在腾讯云 COS 存储空间 bucket_cos
中创建仓库 test_repo
。
CREATE REPOSITORY test_repo
WITH BROKER
ON LOCATION "cosn://bucket_cos/backup"
PROPERTIES(
"fs.cosn.userinfo.secretId" = "xxxxxxxxxxxxxxxxx",
"fs.cosn.userinfo.secretKey" = "yyyyyyyyyyyyyyyy",
"fs.cosn.bucket.endpoint_suffix" = "cos.ap-beijing.myqcloud.com"
);
- 在 MinIO 中创建仓库
以下示例在 MinIO 存储空间 bucket_minio
中创建仓库 test_repo
。
CREATE REPOSITORY test_repo
WITH BROKER
ON LOCATION "s3://bucket_minio/backup"
PROPERTIES(
"aws.s3.access_key" = "XXXXXXXXXXXXXXXXX",
"aws.s3.secret_key" = "yyyyyyyyyyyyyyyyy",
"aws.s3.endpoint" = "http://minio:9000"
);
仓库创建完成后,您可以通过 SHOW REPOSITORIES 查看已创建的仓库。完成数据恢复后,您可以通过 DROP REPOSITORY 语句删除 StarRocks 中的仓库。但备份在远端存储系统中的快照数据目前无法通过 StarRocks 直接删除,您需要手动删除备份在远端存储系统的快照路径。