描述
BACKUP 或 RESTORE 操作及其当前状态和其他属性的列表。请注意,该表不是持久化的,仅显示自上次服务器重启后执行的操作。
列
id(String) — 操作 ID,可通过 SETTINGS id=… 传入,也可以是随机生成的 UUID。name(String) — 操作名称,即形如Disk('backups', 'my_backup')的字符串base_backup_name(String) — 基础备份操作名称,即形如Disk('backups', 'my_base_backup')的字符串query_id(String) — 发起备份的查询的 Query ID。status(Enum8(‘CREATING_BACKUP’ = 0, ‘BACKUP_CREATED’ = 1, ‘BACKUP_FAILED’ = 2, ‘RESTORING’ = 3, ‘RESTORED’ = 4, ‘RESTORE_FAILED’ = 5, ‘BACKUP_CANCELLED’ = 6, ‘RESTORE_CANCELLED’ = 7)) — 备份或恢复操作的状态。error(String) — 错误消息 (如有) 。start_time(DateTime64(6)) — 操作开始时间。end_time(DateTime64(6)) — 操作完成时间。num_files(UInt64) — 备份中存储的文件数量。total_size(UInt64) — 备份中存储的文件总大小。num_entries(UInt64) — 备份中的条目数,即如果备份以文件夹形式存储,则表示该文件夹中的文件数量。uncompressed_size(UInt64) — 备份的未压缩大小。compressed_size(UInt64) — 备份的压缩后大小。files_read(UInt64) — 返回从该备份执行 RESTORE 期间读取的文件数量。bytes_read(UInt64) — 返回从该备份执行 RESTORE 期间读取的文件总大小。ProfileEvents(Map(LowCardinality(String), UInt64)) — 此操作期间捕获的所有 profile events。settings(Map(LowCardinality(String), String)) — 此操作实际使用的备份/恢复专用设置 (来自SETTINGS子句,包括默认值) 。敏感设置不会暴露。engine_settings(Map(LowCardinality(String), String)) — 备份引擎的 reader/writer 实际使用的设置 (例如 S3allow_native_copy) 。当操作涉及多个引擎且无法用扁平 map 表示时,此项为空:incremental backups 和 restores、lightweight snapshot restores,以及非内部ON CLUSTER操作。
恢复操作的原子性
RESTORE 不是事务性操作,失败时不会回滚。对于每个表,所有选定的 parts 都会先复制完成,然后才会附加;但附加阶段本身并非事务性的——parts 会逐个对外可见。各个表彼此独立处理。
表之间彼此独立。 即使同一条命令中的另一个表随后失败,已完成恢复的表也会保留在原处:
db.t0 已完全恢复、但 db.t1 尚未完成时失败,db.t0 仍会处于已恢复状态。
**PARTITIONS 子句不是提交边界。**它只用于选择要恢复表中的哪些 parts:
2026-06-01 已完全复制,但 2026-06-02 和 2026-06-03 仍未完成——那么 2026-06-01 不会被提交,并且该表不会保留此次命令恢复的任何数据。复制阶段一旦完成并开始进入 attach 步骤后,parts 会逐个提交,因此如果在 attach 期间发生故障,表可能会处于部分恢复的状态,且无法回滚。
如果要让各个分区独立提交 (这样即使后续失败,已完成的分区也会保留下来,并且可以单独重试) ,请为每个分区分别运行一次 RESTORE,并在第一次之后使用 SETTINGS allow_non_empty_tables = true。