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

BACKUP

StarRocks 支持备份和恢复以下对象

  • 内部数据库、表(所有类型和分区策略)和分区
  • 外部 Catalog 的元数据(从 v3.4.0 版本开始支持)
  • 同步物化视图和异步物化视图
  • 逻辑视图(从 v3.4.0 版本开始支持)
  • 用户定义的函数(从 v3.4.0 版本开始支持)
提示

有关备份和恢复的概述,请参阅备份和恢复指南

BACKUP 是一个异步操作。您可以使用 SHOW BACKUP 查看 BACKUP 作业的状态,或者使用 CANCEL BACKUP 取消 BACKUP 作业。 您可以使用 SHOW SNAPSHOT 查看快照信息。

注意

  • 共享数据 StarRocks 集群不支持数据 BACKUP 和 RESTORE。
  • 在每个数据库中,每次只允许运行一个 BACKUP 或 RESTORE 作业。否则,StarRocks 将返回错误。
  • StarRocks 不支持为数据备份指定数据压缩算法。

权限要求

在 v3.0 之前的版本中,具有 admin_priv 权限的用户可以执行此操作。 在 v3.0 及更高版本中,要备份特定对象,用户必须具有 System 级别的 REPOSITORY 权限以及相应表或相应数据库下所有表的 EXPORT 权限。 例如

  • 授予角色从指定表导出数据的权限。

    GRANT REPOSITORY ON SYSTEM TO ROLE backup_tbl;
    GRANT EXPORT ON TABLE <table_name> TO ROLE backup_tbl;
  • 授予角色从指定数据下的所有表导出数据的权限。

    GRANT REPOSITORY ON SYSTEM TO ROLE backup_db;
    GRANT EXPORT ON ALL TABLES IN DATABASE <database_name> TO ROLE backup_db;
  • 授予角色从所有数据库中的所有表导出数据的权限。

    GRANT REPOSITORY ON SYSTEM TO ROLE backup;
    GRANT EXPORT ON ALL TABLES IN ALL DATABASES TO ROLE backup;

兼容早期版本的语法

BACKUP SNAPSHOT <db_name>.<snapshot_name>
TO <repository_name>
[ ON ( <table_name> [ PARTITION ( <partition_name> [, ...] ) ]
[, ...] ) ]
[ PROPERTIES ("key"="value" [, ...] ) ]

参数

参数描述
db_name存储要备份的数据的数据库的名称。
snapshot_name指定数据快照的名称。 全局唯一。
repository_name仓库名称。 您可以使用 CREATE REPOSITORY 创建仓库。
ON要备份的表的名称。 如果未指定此参数,则备份整个数据库。
PARTITION要备份的分区的名称。 如果未指定此参数,则备份整个表。
PROPERTIES数据快照的属性。 有效键
  • type:备份类型。 目前,仅支持完整备份 FULL。 默认值:FULL
  • timeout:任务超时。 单位:秒。 默认值:86400

v3.4.0 及更高版本支持的语法

-- Back up external catalog metadata.
BACKUP { ALL EXTERNAL CATALOGS | EXTERNAL CATALOG[S] (<catalog_name> [, ...]) }
[ DATABASE <db_name> ] SNAPSHOT [<db_name>.]<snapshot_name>
TO <repository_name>
[ PROPERTIES ("key"="value" [, ...] ) ]

-- Back up databases, tables, partitions, materialized views, logical views, or UDFs.

BACKUP [ DATABASE <db_name> ] SNAPSHOT [<db_name>.]<snapshot_name>
TO <repository_name>
[ ON ( backup_object [, ...] )]
[ PROPERTIES ("key"="value" [, ...] ) ]

backup_object ::= [
{ ALL TABLE[S] | TABLE[S] <table_name>[, TABLE[S] <table_name> ...] } |
{ ALL MATERIALIZED VIEW[S] | MATERIALIZED VIEW[S] <mv_name>[, MATERIALIZED VIEW[S] <mv_name> ...] } |
{ ALL VIEW[S] | VIEW[S] <view_name>[, VIEW[S] <view_name> ...] } |
{ ALL FUNCTION[S] | FUNCTION[S] <udf_name>[, FUNCTION[S] <udf_name> ...] } |
<table_name> PARTITION (<partition_name>[, ...]) ]

参数

参数描述
ALL EXTERNAL CATALOGS备份所有外部 Catalog 的元数据。
catalog_name需要备份的外部 Catalog 的名称。
DATABASE db_name对象或快照所属的数据库的名称。 您只能指定 DATABASE <db_name><db_name>.
db_name.对象或快照所属的数据库的名称。 您只能指定 DATABASE <db_name><db_name>.
snapshot_name数据快照的名称。 全局唯一。
repository_name仓库名称。 您可以使用 CREATE REPOSITORY 创建仓库。
ON要备份的对象。 如果未指定此参数,则备份整个数据库。
table_name要备份的表的名称。
mv_name要备份的物化视图的名称。
view_name要备份的逻辑视图的名称。
udf_name要备份的 UDF 的名称。
PARTITION要备份的分区的名称。 如果未指定此参数,则备份整个表。
PROPERTIES数据快照的属性。 有效键
  • type:备份类型。 目前,仅支持完整备份 FULL。 默认值:FULL
  • timeout:任务超时。 单位:秒。 默认值:86400

示例

兼容早期版本的语法示例

示例 1:将数据库 example_db 备份到仓库 example_repo

BACKUP SNAPSHOT example_db.snapshot_label1
TO example_repo
PROPERTIES ("type" = "full");

示例 2:将 example_db 中的表 example_tbl 备份到 example_repo

BACKUP SNAPSHOT example_db.snapshot_label2
TO example_repo
ON (example_tbl);

示例 2:将 example_dbexample_tbl 的分区 p1p2 以及表 example_tbl2 备份到 example_repo

BACKUP SNAPSHOT example_db.snapshot_label3
TO example_repo
ON(
example_tbl PARTITION (p1, p2),
example_tbl2
);

v3.4.0 及更高版本支持的语法示例

示例 1:备份数据库。

BACKUP DATABASE sr_hub SNAPSHOT sr_hub_backup TO test_repo;

示例 2:备份数据库中的表。

-- Backs up one table.
BACKUP DATABASE sr_hub SNAPSHOT sr_member_backup
TO test_repo
ON (TABLE sr_member);

-- Backs up multiple tables.
BACKUP DATABASE sr_hub SNAPSHOT sr_core_backup
TO test_repo
ON (TABLE sr_member, TABLE sr_pmc);

-- Backs up all tables.
BACKUP DATABASE sr_hub SNAPSHOT sr_all_backup
TO test_repo
ON (ALL TABLES);

示例 3:备份表中的分区。

-- Backs up one partition.
BACKUP DATABASE sr_hub SNAPSHOT sr_par_backup
TO test_repo
ON (TABLE sr_member PARTITION (p1));

-- Backs up multiple partitions.
BACKUP DATABASE sr_hub SNAPSHOT sr_par_backup
TO test_repo
ON (TABLE sr_member PARTITION (p1,p2,p3));

示例 4:备份数据库中的物化视图。

-- Backs up one materialized view.
BACKUP DATABASE sr_hub SNAPSHOT sr_mv1_backup
TO test_repo
ON (MATERIALIZED VIEW sr_mv1);

-- Backs up multiple materialized views.
BACKUP DATABASE sr_hub SNAPSHOT sr_mv2_backup
TO test_repo
ON (MATERIALIZED VIEW sr_mv1, MATERIALIZED VIEW sr_mv2);

-- Backs up all materialized views.
BACKUP DATABASE sr_hub SNAPSHOT sr_mv3_backup
TO test_repo
ON (ALL MATERIALIZED VIEWS);

示例 5:备份数据库中的逻辑视图。

-- Backs up one logical view.
BACKUP DATABASE sr_hub SNAPSHOT sr_view1_backup
TO test_repo
ON (VIEW sr_view1);

-- Backs up multiple logical views.
BACKUP DATABASE sr_hub SNAPSHOT sr_view2_backup
TO test_repo
ON (VIEW sr_view1, VIEW sr_view2);

-- Backs up all logical views.
BACKUP DATABASE sr_hub SNAPSHOT sr_view3_backup
TO test_repo
ON (ALL VIEWS);

示例 6:备份数据库中的 UDF。

-- Backs up one UDF.
BACKUP DATABASE sr_hub SNAPSHOT sr_udf1_backup
TO test_repo
ON (FUNCTION sr_udf1);

-- Backs up multiple UDFs.
BACKUP DATABASE sr_hub SNAPSHOT sr_udf2_backup
TO test_repo
ON (FUNCTION sr_udf1, FUNCTION sr_udf2);

-- Backs up all UDFs.
BACKUP DATABASE sr_hub SNAPSHOT sr_udf3_backup
TO test_repo
ON (ALL FUNCTIONS);

使用说明

  • 对全局、数据库、表和分区级别执行备份和恢复操作需要不同的权限。
  • 在每个数据库中,每次只允许运行一个 BACKUP 或 RESTORE 作业。否则,StarRocks 将返回错误。
  • 由于 BACKUP 和 RESTORE 作业占用 StarRocks 集群的许多资源,您可以在 StarRocks 集群负载不高时备份和恢复数据。
  • StarRocks 不支持为数据备份指定数据压缩算法。
  • 由于数据是作为快照备份的,因此在快照生成时加载的数据不包含在快照中。 因此,如果在生成快照后和 RESTORE 作业完成之前将数据加载到旧集群中,还需要将数据加载到数据恢复到的集群中。 建议在数据迁移完成后的一段时间内将数据并行加载到两个集群中,然后在验证数据和服务正确性后将应用程序迁移到新集群。
  • 在 RESTORE 作业完成之前,您无法操作要恢复的表。
  • 主键表无法恢复到 v2.5 之前的 StarRocks 集群。
  • 您无需在恢复之前在新集群中创建要恢复的表。RESTORE 作业会自动创建它。
  • 如果存在与要恢复的表重名的表,StarRocks 首先检查现有表的 Schema 是否与要恢复的表匹配。 如果 Schema 匹配,StarRocks 会使用快照中的数据覆盖现有表。 如果 Schema 不匹配,则 RESTORE 作业将失败。 您可以使用关键字 AS 重命名要恢复的表,或者在恢复数据之前删除现有表。
  • 如果 RESTORE 作业覆盖了现有的数据库、表或分区,则在作业进入 COMMIT 阶段后,无法恢复覆盖的数据。 如果 RESTORE 作业在此点失败或被取消,则数据可能会损坏且无法访问。 在这种情况下,您只能再次执行 RESTORE 操作并等待作业完成。 因此,我们建议您不要通过覆盖来恢复数据,除非您确定当前数据不再使用。 覆盖操作首先检查快照与现有数据库、表或分区之间的元数据一致性。 如果检测到不一致,则无法执行 RESTORE 操作。
  • 目前,StarRocks 不支持备份和恢复与用户帐户、权限和资源组相关的配置数据。
  • 目前,StarRocks 不支持备份和恢复表之间的 Colocate Join 关系。