RESTORE
更新时间:2021-08-20
RESTORE
Description
该语句用于将之前通过 BACKUP 命令备份的数据,恢复到指定数据库下。
该命令为异步操作。提交成功后,需通过 SHOW RESTORE 命令查看进度。
仅支持恢复 OLAP 类型的表。
RESTORE SNAPSHOT [db_name.]snapshot_name
FROM `repository_name`
ON (
`table_name` [PARTITION (`p1`, ...)] [AS `tbl_alias`],
...
)
PROPERTIES ("key"="value", ...);
snapshot_name
:通过 SHOW SNAPSHOT 命令查看到的 Snapshot 名称。repository_name
:仓库名称。-
ON
ON
子句指定快照中需要备份的表和分区。其中表名和分区名必须是备份快照中的名称,而tbl_alias
可以为表指定别名。最终恢复的表会采用这个别名。分区名称不能修改。如果不指定分区,则默认恢复该表的所有分区。所指定的表和分区必须已存在于仓库备份中。 -
PROPERTIES
:指定恢复操作相关属性backup_timestamp
:指定恢复对应备份快照的哪个时间版本,必填。该信息可以通过 SHOW SNAPSHOT 命令获取。replication_num
:指定恢复的表或分区的副本数。默认为3。若恢复已存在的表或分区,则副本数必须和已存在表或分区的副本数相同。同时,Compute Node 节点数量必须大于等于指定副本数。timeout
:任务超时时间,默认为一天。单位秒。
Example
-
从 example_repo 中恢复备份 snapshot_1 中的表 backup_tbl 到数据库 example_db1,时间版本为 "2020-05-04-16-45-08"。恢复为 1 个副本:
RESTORE SNAPSHOT example_db1.`snapshot_1` FROM `example_repo` ON ( `backup_tbl` ) PROPERTIES ( "backup_timestamp"="2020-05-04-16-45-08", "replication_num" = "1" );
-
从 example_repo 中恢复备份 snapshot_2 中的表 backup_tbl 的分区 p1,p2,以及表 backup_tbl2 到数据库 example_db1,并重命名为 new_tbl,时间版本为 "2020-05-04-17-11-01"。默认恢复为 3 个副本:
RESTORE SNAPSHOT example_db1.`snapshot_2` FROM `example_repo` ON ( `backup_tbl` PARTITION (`p1`, `p2`), `backup_tbl2` AS `new_tbl` ) PROPERTIES ( "backup_timestamp"="202-05-04-17-11-01" );
Keywords
RESTORE, SNAPSHOT
最佳实践
- 同一数据库下只能有一个正在执行的恢复操作。
- 可以将仓库中备份的表恢复替换数据库中已有的同名表,但须保证两张表的表结构完全一致。表结构包括:表名、列、分区、物化视图等等。
- 当指定恢复表的部分分区时,系统会检查分区范围是否能够匹配。
-
恢复操作的效率:
在集群规模相同的情况下,恢复操作的耗时基本等同于备份操作的耗时。如果想加速恢复操作,可以先通过设置
replication_num
参数,仅恢复一个副本,之后在通过调整副本数 ALTER TABLE PROPERTY,将副本补齐。