备份和恢复数据
本主题介绍如何在 StarRocks 中备份和恢复数据,或将数据迁移到新的 StarRocks 集群。
StarRocks 支持将数据作为快照备份到远程存储系统,并将数据恢复到任何 StarRocks 集群。
从 v3.4.0 版本开始,StarRocks 增强了 BACKUP 和 RESTORE 的功能,支持更多对象并重构了语法以提高灵活性。
StarRocks 支持以下远程存储系统
- Apache™ Hadoop® (HDFS) 集群
- AWS S3
- Google GCS
- MinIO
StarRocks 支持备份以下对象
- 内部数据库、表(所有类型和分区策略)和分区
- 外部 Catalog 的元数据(从 v3.4.0 版本开始支持)
- 同步物化视图和异步物化视图
- 逻辑视图(从 v3.4.0 版本开始支持)
- 用户定义的函数(从 v3.4.0 版本开始支持)
注意
共享数据 StarRocks 集群不支持数据 BACKUP 和 RESTORE。
创建存储库
在备份数据之前,您需要创建一个存储库,用于在远程存储系统中存储数据快照。您可以在 StarRocks 集群中创建多个存储库。有关详细说明,请参见 CREATE REPOSITORY。
- 在 HDFS 中创建存储库
以下示例在 HDFS 集群中创建一个名为 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 用户的凭据(访问密钥和密钥)、实例配置文件或承担角色作为访问 AWS S3 的凭据方法。
- 以下示例使用基于 IAM 用户的凭据作为凭据方法,在 AWS 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"
);- 以下示例使用实例配置文件作为凭据方法,在 AWS 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"
);- 以下示例使用承担角色作为凭据方法,在 AWS 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 用户的凭据作为凭据方法,在 AWS 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://
。- 请勿在端点地址中指定
https
。
- 在 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 删除远程存储系统中备份的数据快照。您需要在远程存储系统中手动删除它们。
备份数据
创建存储库后,您需要创建一个数据快照并将其备份到远程存储库中。有关详细说明,请参见 BACKUP。BACKUP 是一个异步操作。您可以使用 SHOW BACKUP 检查 BACKUP 作业的状态,或使用 CANCEL BACKUP 取消 BACKUP 作业。
StarRocks 支持在数据库、表或分区的粒度级别上进行 FULL 备份。
如果您的表中存储了大量数据,我们建议您按分区备份和恢复数据。这样,您可以减少作业失败时的重试成本。如果您需要定期备份增量数据,您可以为您的表配置一个 分区计划,并且每次只备份新的分区。
备份数据库
对数据库执行完整的 BACKUP 将备份数据库中的所有表、同步和异步物化视图、逻辑视图和 UDF。
以下示例备份快照 sr_hub_backup
中的数据库 sr_hub
,并将快照上传到存储库 test_repo
。
-- Supported from v3.4.0 onwards.
BACKUP DATABASE sr_hub SNAPSHOT sr_hub_backup
TO test_repo;
-- Compatible with the syntax in earlier versions.
BACKUP SNAPSHOT sr_hub.sr_hub_backup
TO test_repo;
备份表
StarRocks 支持备份和恢复所有类型和分区策略的表。对表执行完整的 BACKUP 将备份表和构建在其上的同步物化视图。
以下示例备份快照 sr_member_backup
中数据库 sr_hub
中的表 sr_member
,并将快照上传到存储库 test_repo
。
-- Supported from v3.4.0 onwards.
BACKUP DATABASE sr_hub SNAPSHOT sr_member_backup
TO test_repo
ON (TABLE sr_member);
-- Compatible with the syntax in earlier versions.
BACKUP SNAPSHOT sr_hub.sr_member_backup
TO test_repo
ON (sr_member);
以下示例备份快照 sr_core_backup
中数据库 sr_hub
中的两个表 sr_member
和 sr_pmc
,并将快照上传到存储库 test_repo
。
BACKUP DATABASE sr_hub SNAPSHOT sr_core_backup
TO test_repo
ON (TABLE sr_member, TABLE sr_pmc);
以下示例备份快照 sr_all_backup
中数据库 sr_hub
中的所有表,并将快照上传到存储库 test_repo
。
BACKUP DATABASE sr_hub SNAPSHOT sr_all_backup
TO test_repo
ON (ALL TABLES);
备份分区
以下示例备份快照 sr_par_backup
中数据库 sr_hub
中的表 sr_member
的分区 p1
,并将快照上传到存储库 test_repo
。
-- Supported from v3.4.0 onwards.
BACKUP DATABASE sr_hub SNAPSHOT sr_par_backup
TO test_repo
ON (TABLE sr_member PARTITION (p1));
-- Compatible with the syntax in earlier versions.
BACKUP SNAPSHOT sr_hub.sr_par_backup
TO test_repo
ON (sr_member PARTITION (p1));
您可以指定多个分区名称,用逗号 (,
) 分隔,以批量备份分区。
备份物化视图
您无需手动备份同步物化视图,因为它们将与基本表的 BACKUP 操作一起备份。
异步物化视图可以与其所属数据库的 BACKUP 操作一起备份。您也可以手动备份它们。
以下示例备份快照 sr_mv1_backup
中数据库 sr_hub
中的物化视图 sr_mv1
,并将快照上传到存储库 test_repo
。
BACKUP DATABASE sr_hub SNAPSHOT sr_mv1_backup
TO test_repo
ON (MATERIALIZED VIEW sr_mv1);
以下示例备份快照 sr_mv2_backup
中数据库 sr_hub
中的两个物化视图 sr_mv1
和 sr_mv2
,并将快照上传到存储库 test_repo
。
BACKUP DATABASE sr_hub SNAPSHOT sr_mv2_backup
TO test_repo
ON (MATERIALIZED VIEW sr_mv1, MATERIALIZED VIEW sr_mv2);
以下示例备份快照 sr_mv3_backup
中数据库 sr_hub
中的所有物化视图,并将快照上传到存储库 test_repo
。
BACKUP DATABASE sr_hub SNAPSHOT sr_mv3_backup
TO test_repo
ON (ALL MATERIALIZED VIEWS);
备份逻辑视图
以下示例备份快照 sr_view1_backup
中数据库 sr_hub
中的逻辑视图 sr_view1
,并将快照上传到存储库 test_repo
。
BACKUP DATABASE sr_hub SNAPSHOT sr_view1_backup
TO test_repo
ON (VIEW sr_view1);
以下示例备份快照 sr_view2_backup
中数据库 sr_hub
中的两个逻辑视图 sr_view1
和 sr_view2
,并将快照上传到存储库 test_repo
。
BACKUP DATABASE sr_hub SNAPSHOT sr_view2_backup
TO test_repo
ON (VIEW sr_view1, VIEW sr_view2);
以下示例备份快照 sr_view3_backup
中数据库 sr_hub
中的所有逻辑视图,并将快照上传到存储库 test_repo
。
BACKUP DATABASE sr_hub SNAPSHOT sr_view3_backup
TO test_repo
ON (ALL VIEWS);
备份 UDF
以下示例备份快照 sr_udf1_backup
中数据库 sr_hub
中的 UDF sr_udf1
,并将快照上传到存储库 test_repo
。
BACKUP DATABASE sr_hub SNAPSHOT sr_udf1_backup
TO test_repo
ON (FUNCTION sr_udf1);
以下示例备份快照 sr_udf2_backup
中数据库 sr_hub
中的两个 UDF sr_udf1
和 sr_udf2
,并将快照上传到存储库 test_repo
。
BACKUP DATABASE sr_hub SNAPSHOT sr_udf2_backup
TO test_repo
ON (FUNCTION sr_udf1, FUNCTION sr_udf2);
以下示例备份快照 sr_udf3_backup
中数据库 sr_hub
中的所有 UDF,并将快照上传到存储库 test_repo
。
BACKUP DATABASE sr_hub SNAPSHOT sr_udf3_backup
TO test_repo
ON (ALL FUNCTIONS);
备份外部 Catalog 的元数据
以下示例备份快照 iceberg_backup
中的外部 Catalog iceberg
的元数据,并将快照上传到存储库 test_repo
。
BACKUP EXTERNAL CATALOG (iceberg) SNAPSHOT iceberg_backup
TO test_repo;
以下示例备份快照 iceberg_hive_backup
中的两个外部 Catalog iceberg
和 hive
的元数据,并将快照上传到存储库 test_repo
。
BACKUP EXTERNAL CATALOGS (iceberg, hive) SNAPSHOT iceberg_hive_backup
TO test_repo;
以下示例备份快照 all_catalog_backup
中的所有外部 Catalog 的元数据,并将快照上传到存储库 test_repo
。
BACKUP ALL EXTERNAL CATALOGS SNAPSHOT all_catalog_backup
TO test_repo;
要取消对外部 Catalog 的 BACKUP 操作,请执行以下语句
CANCEL BACKUP FOR EXTERNAL CATALOG;
恢复数据
您可以将远程存储系统中备份的数据快照恢复到当前或其他 StarRocks 集群以恢复或迁移数据。
从快照恢复对象时,必须指定快照的时间戳。
使用 RESTORE 语句恢复远程存储系统中的数据快照。
RESTORE 是一个异步操作。您可以使用 SHOW RESTORE 检查 RESTORE 作业的状态,或使用 CANCEL RESTORE 取消 RESTORE 作业。
(可选)在新集群中创建存储库
要将数据迁移到另一个 StarRocks 集群,您需要在目标集群中创建一个具有相同**存储库名称**和**位置**的存储库,否则您将无法查看先前备份的数据快照。有关详细信息,请参见 创建存储库。
获取快照时间戳
在恢复数据之前,您可以检查存储库中的快照以使用 SHOW SNAPSHOT 获取时间戳。
以下示例检查 test_repo
中的快照信息。
mysql> SHOW SNAPSHOT ON test_repo;
+------------------+-------------------------+--------+
| Snapshot | Timestamp | Status |
+------------------+-------------------------+--------+
| sr_member_backup | 2023-02-07-14-45-53-143 | OK |
+------------------+-------------------------+--------+
1 row in set (1.16 sec)
恢复数据库
以下示例将快照 sr_hub_backup
中的数据库 sr_hub
恢复到目标集群中的数据库 sr_hub
。如果数据库在快照中不存在,系统将返回错误。如果数据库在目标集群中不存在,系统将自动创建它。
-- Supported from v3.4.0 onwards.
RESTORE SNAPSHOT sr_hub_backup
FROM test_repo
DATABASE sr_hub
PROPERTIES("backup_timestamp" = "2024-12-09-10-25-58-842");
-- Compatible with the syntax in earlier versions.
RESTORE SNAPSHOT sr_hub.sr_hub_backup
FROM `test_repo`
PROPERTIES("backup_timestamp" = "2024-12-09-10-25-58-842");
以下示例将快照 sr_hub_backup
中的数据库 sr_hub
恢复到目标集群中的数据库 sr_hub_new
。如果数据库 sr_hub
在快照中不存在,系统将返回错误。如果数据库 sr_hub_new
在目标集群中不存在,系统将自动创建它。
-- Supported from v3.4.0 onwards.
RESTORE SNAPSHOT sr_hub_backup
FROM test_repo
DATABASE sr_hub AS sr_hub_new
PROPERTIES("backup_timestamp" = "2024-12-09-10-25-58-842");
恢复表
以下示例将快照 sr_member_backup
中数据库 sr_hub
的表 sr_member
恢复到目标集群中数据库 sr_hub
的表 sr_member
。
-- Supported from v3.4.0 onwards.
RESTORE SNAPSHOT sr_member_backup
FROM test_repo
DATABASE sr_hub
ON (TABLE sr_member)
PROPERTIES ("backup_timestamp" = "2024-12-09-10-52-10-940");
-- Compatible with the syntax in earlier versions.
RESTORE SNAPSHOT sr_hub.sr_member_backup
FROM test_repo
ON (sr_member)
PROPERTIES ("backup_timestamp"="2024-12-09-10-52-10-940");
以下示例将快照 sr_member_backup
中数据库 sr_hub
的表 sr_member
恢复到目标集群中数据库 sr_hub_new
的表 sr_member_new
。
RESTORE SNAPSHOT sr_member_backup
FROM test_repo
DATABASE sr_hub AS sr_hub_new
ON (TABLE sr_member AS sr_member_new)
PROPERTIES ("backup_timestamp" = "2024-12-09-10-52-10-940");
以下示例将快照 sr_core_backup
中数据库 sr_hub
的两个表 sr_member
和 sr_pmc
恢复到目标集群中数据库 sr_hub
的两个表 sr_member
和 sr_pmc
。
RESTORE SNAPSHOT sr_core_backup
FROM test_repo
DATABASE sr_hub
ON (TABLE sr_member, TABLE sr_pmc)
PROPERTIES ("backup_timestamp" = "2024-12-09-10-52-10-940");
以下示例恢复快照 sr_all_backup
中数据库 sr_hub
中的所有表。
RESTORE SNAPSHOT sr_all_backup
FROM test_repo
DATABASE sr_hub
ON (ALL TABLES);
以下示例恢复快照 sr_all_backup
中数据库 sr_hub
的所有表中的一个。
RESTORE SNAPSHOT sr_all_backup
FROM test_repo
DATABASE sr_hub
ON (TABLE sr_member)
PROPERTIES ("backup_timestamp" = "2024-12-09-10-52-10-940");
恢复分区
以下示例将快照 sr_par_backup
中表 sr_member
的分区 p1
恢复到目标集群中表 sr_member
的分区 p1
。
-- Supported from v3.4.0 onwards.
RESTORE SNAPSHOT sr_par_backup
FROM test_repo
DATABASE sr_hub
ON (TABLE sr_member PARTITION (p1))
PROPERTIES ("backup_timestamp" = "2024-12-09-10-52-10-940");
-- Compatible with the syntax in earlier versions.
RESTORE SNAPSHOT sr_hub.sr_par_backup
FROM test_repo
ON (sr_member PARTITION (p1))
PROPERTIES ("backup_timestamp" = "2024-12-09-10-52-10-940");
您可以指定多个分区名称,用逗号 (,
) 分隔,以批量恢复分区。
恢复物化视图
以下示例将快照 sr_mv1_backup
中数据库 sr_hub
的物化视图 sr_mv1
恢复到目标集群。
RESTORE SNAPSHOT sr_mv1_backup
FROM test_repo
DATABASE sr_hub
ON (MATERIALIZED VIEW sr_mv1)
PROPERTIES ("backup_timestamp" = "2024-12-09-10-52-10-940");
以下示例将快照 sr_mv2_backup
中数据库 sr_hub
的两个物化视图 sr_mv1
和 sr_mv2
恢复到目标集群。
RESTORE SNAPSHOT sr_mv2_backup
FROM test_repo
DATABASE sr_hub
ON (MATERIALIZED VIEW sr_mv1, MATERIALIZED VIEW sr_mv2)
PROPERTIES ("backup_timestamp" = "2024-12-09-10-52-10-940");
以下示例将快照 sr_mv3_backup
中数据库 sr_hub
的所有物化视图恢复到目标集群。
RESTORE SNAPSHOT sr_mv3_backup
FROM test_repo
DATABASE sr_hub
ON (ALL MATERIALIZED VIEWS)
PROPERTIES ("backup_timestamp" = "2024-12-09-10-52-10-940");
以下示例将快照 sr_mv3_backup
中数据库 sr_hub
的所有物化视图中的一个恢复到目标集群。
RESTORE SNAPSHOT sr_mv3_backup
FROM test_repo
DATABASE sr_hub
ON (MATERIALIZED VIEW sr_mv1)
PROPERTIES ("backup_timestamp" = "2024-12-09-10-52-10-940");
RESTORE 后,您可以使用 SHOW MATERIALIZED VIEWS 检查物化视图的状态。
- 如果物化视图处于活动状态,则可以直接使用它。
- 如果物化视图处于非活动状态,可能是因为其基本表未恢复。在恢复所有基本表后,您可以使用 ALTER MATERIALIZED VIEW 重新激活物化视图。
恢复逻辑视图
以下示例将快照 sr_view1_backup
中数据库 sr_hub
的逻辑视图 sr_view1
恢复到目标集群。
RESTORE SNAPSHOT sr_view1_backup
FROM test_repo
DATABASE sr_hub
ON (VIEW sr_view1)
PROPERTIES ("backup_timestamp" = "2024-12-09-10-52-10-940");
以下示例将快照 sr_view2_backup
中数据库 sr_hub
的两个逻辑视图 sr_view1
和 sr_view2
恢复到目标集群。
RESTORE SNAPSHOT sr_view2_backup
FROM test_repo
DATABASE sr_hub
ON (VIEW sr_view1, VIEW sr_view2)
PROPERTIES ("backup_timestamp" = "2024-12-09-10-52-10-940");
以下示例将快照 sr_view3_backup
中数据库 sr_hub
的所有逻辑视图恢复到目标集群。
RESTORE SNAPSHOT sr_view3_backup
FROM test_repo
DATABASE sr_hub
ON (ALL VIEWS)
PROPERTIES ("backup_timestamp" = "2024-12-09-10-52-10-940");
以下示例将快照 sr_view3_backup
中数据库 sr_hub
的所有逻辑视图中的一个恢复到目标集群。
RESTORE SNAPSHOT sr_view3_backup
FROM test_repo
DATABASE sr_hub
ON (VIEW sr_view1)
PROPERTIES ("backup_timestamp" = "2024-12-09-10-52-10-940");
恢复 UDF
以下示例将快照 sr_udf1_backup
中数据库 sr_hub
的 UDF sr_udf1
恢复到目标集群。
RESTORE SNAPSHOT sr_udf1_backup
FROM test_repo
DATABASE sr_hub
ON (FUNCTION sr_udf1)
PROPERTIES ("backup_timestamp" = "2024-12-09-10-52-10-940");
以下示例将快照 sr_udf2_backup
中数据库 sr_hub
的两个 UDF sr_udf1
和 sr_udf2
恢复到目标集群。
RESTORE SNAPSHOT sr_udf2_backup
FROM test_repo
DATABASE sr_hub
ON (FUNCTION sr_udf1, FUNCTION sr_udf2)
PROPERTIES ("backup_timestamp" = "2024-12-09-10-52-10-940");
以下示例将快照 sr_udf3_backup
中数据库 sr_hub
的所有 UDF 恢复到目标集群。
RESTORE SNAPSHOT sr_udf3_backup
FROM test_repo
DATABASE sr_hub
ON (ALL FUNCTIONS)
PROPERTIES ("backup_timestamp" = "2024-12-09-10-52-10-940");
以下示例将快照 sr_udf3_backup
中数据库 sr_hub
的所有 UDF 中的一个恢复到目标集群。
RESTORE SNAPSHOT sr_udf3_backup
FROM test_repo
DATABASE sr_hub
ON (FUNCTION sr_udf1)
PROPERTIES ("backup_timestamp" = "2024-12-09-10-52-10-940");
恢复外部 Catalog 的元数据
以下示例将快照 iceberg_backup
中的外部 Catalog iceberg
的元数据恢复到目标集群,并将其重命名为 iceberg_new
。
RESTORE SNAPSHOT iceberg_backup
FROM test_repo
EXTERNAL CATALOG (iceberg AS iceberg_new)
PROPERTIES ("backup_timestamp" = "2024-12-09-10-52-10-940");
以下示例将快照 iceberg_hive_backup
中的两个外部 Catalog iceberg
和 hive
的元数据恢复到目标集群。
RESTORE SNAPSHOT iceberg_hive_backup
FROM test_repo
EXTERNAL CATALOGS (iceberg, hive)
PROPERTIES ("backup_timestamp" = "2024-12-09-10-52-10-940");
以下示例将快照 all_catalog_backup
中的所有外部 Catalog 的元数据恢复到目标集群。
RESTORE SNAPSHOT all_catalog_backup
FROM test_repo
ALL EXTERNAL CATALOGS
PROPERTIES ("backup_timestamp" = "2024-12-09-10-52-10-940");
要取消对外部 Catalog 的 RESTORE 操作,请执行以下语句
CANCEL RESTORE FOR EXTERNAL CATALOG;
配置 BACKUP 或 RESTORE 作业
您可以通过修改 BE 配置文件 be.conf 中的以下配置项来优化 BACKUP 或 RESTORE 作业的性能
配置项 | 描述 |
---|---|
make_snapshot_worker_count | BE 节点上 BACKUP 作业的 make snapshot 任务的最大线程数。默认值:5 。增加此配置项的值可以增加 make snapshot 任务的并发性。 |
release_snapshot_worker_count | BE 节点上失败的 BACKUP 作业的 release snapshot 任务的最大线程数。默认值:5 。增加此配置项的值可以增加 release snapshot 任务的并发性。 |
upload_worker_count | BE 节点上 BACKUP 作业的 upload 任务的最大线程数。默认值:0 。0 表示将该值设置为 BE 所在的机器上的 CPU 核心数。增加此配置项的值可以增加 upload 任务的并发性。 |
download_worker_count | BE 节点上 RESTORE 作业的 download 任务的最大线程数。默认值:0 。0 表示将该值设置为 BE 所在的机器上的 CPU 核心数。增加此配置项的值可以增加 download 任务的并发性。 |
使用说明
- 对全局、数据库、表和分区级别执行备份和恢复操作需要不同的权限。有关详细信息,请参见 基于场景自定义角色。
- 在每个数据库中,每次只允许运行一个 BACKUP 或 RESTORE 作业。否则,StarRocks 将返回错误。
- 由于 BACKUP 和 RESTORE 作业占用 StarRocks 集群的许多资源,您可以在 StarRocks 集群负载不高时备份和恢复数据。
- StarRocks 不支持为数据备份指定数据压缩算法。
- 由于数据以快照的形式备份,因此快照生成时加载的数据不包含在快照中。因此,如果您在生成快照后和 RESTORE 作业完成之前将数据加载到旧集群中,则还需要将数据加载到数据恢复到的集群中。建议您在数据迁移完成后的一段时间内并行地将数据加载到两个集群中,然后在验证数据和服务正确性后将应用程序迁移到新集群。
- 在 RESTORE 作业完成之前,您无法操作要恢复的表。
- 主键表无法恢复到 v2.5 之前的 StarRocks 集群。
- 您无需在恢复之前在新集群中创建要恢复的表。RESTORE 作业会自动创建它。
- 如果存在一个与要恢复的表具有重复名称的现有表,StarRocks 首先检查现有表的 schema 是否与要恢复的表的 schema 匹配。如果 schema 匹配,StarRocks 将使用快照中的数据覆盖现有表。如果 schema 不匹配,则 RESTORE 作业将失败。您可以选择使用关键字
AS
重命名要恢复的表,或者在恢复数据之前删除现有表。 - 如果 RESTORE 作业覆盖了现有的数据库、表或分区,则在作业进入 COMMIT 阶段后,无法恢复被覆盖的数据。如果 RESTORE 作业在此阶段失败或被取消,则数据可能会损坏且无法访问。在这种情况下,您只能再次执行 RESTORE 操作并等待作业完成。因此,我们建议您不要通过覆盖来恢复数据,除非您确定当前数据不再使用。覆盖操作首先检查快照和现有数据库、表或分区之间的元数据一致性。如果检测到不一致,则无法执行 RESTORE 操作。
- 目前,StarRocks 不支持备份和恢复与用户帐户、权限和资源组相关的配置数据。
- 目前,StarRocks 不支持备份和恢复表之间的 Colocate Join 关系。