Skip to main content

描述

包含所有 BACKUPRESTORE 操作及其当前状态和其他属性的列表。请注意,该表不是持久化的,仅显示自上次服务器重启后执行的操作。

恢复操作的原子性

RESTORE 不是事务性操作,失败时不会回滚。对于每个表,所有选定的 parts 都会先复制完成,然后才会附加;但附加阶段本身并非事务性的——parts 会逐个对外可见。各个表彼此独立处理。 表之间彼此独立。 即使同一条命令中的另一个表随后失败,已完成恢复的表也会保留在原处:
如果此命令在 db.t0 已完全恢复、但 db.t1 尚未完成时失败,db.t0 仍会处于已恢复状态。 **PARTITIONS 子句不是提交边界。**它只用于选择要恢复表中的哪些 parts:
表中所有选定的 parts 都会先被复制,只有在它们全部就绪后才会统一附加。因此,如果此命令在复制阶段失败——例如分区 2026-06-01 已完全复制,但 2026-06-022026-06-03 仍未完成——那么 2026-06-01 不会被提交,并且该表不会保留此次命令恢复的任何数据。复制阶段一旦完成并开始进入 attach 步骤后,parts 会逐个提交,因此如果在 attach 期间发生故障,表可能会处于部分恢复的状态,且无法回滚。 如果要让各个分区独立提交 (这样即使后续失败,已完成的分区也会保留下来,并且可以单独重试) ,请为每个分区分别运行一次 RESTORE,并在第一次之后使用 SETTINGS allow_non_empty_tables = true
最后修改于 2026年7月23日