> ## Documentation Index
> Fetch the complete documentation index at: https://clickhouse.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

> 包含与 `BACKUP` 和 `RESTORE` 操作相关信息的日志记录条目的系统表。

# system.backups

<div id="description">
  ## 描述
</div>

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

<div id="columns">
  ## 列
</div>

* `id` ([String](/docs/zh/reference/data-types/index)) — 操作 ID，可通过 SETTINGS id=... 传入，也可以是随机生成的 UUID。
* `name` ([String](/docs/zh/reference/data-types/index)) — 操作名称，即形如 `Disk('backups', 'my_backup')` 的字符串
* `base_backup_name` ([String](/docs/zh/reference/data-types/index)) — 基础备份操作名称，即形如 `Disk('backups', 'my_base_backup')` 的字符串
* `query_id` ([String](/docs/zh/reference/data-types/index)) — 发起备份的查询的 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)](/docs/zh/reference/data-types/index)) — 备份或恢复操作的状态。
* `error` ([String](/docs/zh/reference/data-types/index)) — 错误消息 (如有) 。
* `start_time` ([DateTime64(6)](/docs/zh/reference/data-types/index)) — 操作开始时间。
* `end_time` ([DateTime64(6)](/docs/zh/reference/data-types/index)) — 操作完成时间。
* `num_files` ([UInt64](/docs/zh/reference/data-types/index)) — 备份中存储的文件数量。
* `total_size` ([UInt64](/docs/zh/reference/data-types/index)) — 备份中存储的文件总大小。
* `num_entries` ([UInt64](/docs/zh/reference/data-types/index)) — 备份中的条目数，即如果备份以文件夹形式存储，则表示该文件夹中的文件数量。
* `uncompressed_size` ([UInt64](/docs/zh/reference/data-types/index)) — 备份的未压缩大小。
* `compressed_size` ([UInt64](/docs/zh/reference/data-types/index)) — 备份的压缩后大小。
* `files_read` ([UInt64](/docs/zh/reference/data-types/index)) — 返回从该备份执行 RESTORE 期间读取的文件数量。
* `bytes_read` ([UInt64](/docs/zh/reference/data-types/index)) — 返回从该备份执行 RESTORE 期间读取的文件总大小。
* `ProfileEvents` ([Map(LowCardinality(String), UInt64)](/docs/zh/reference/data-types/index)) — 此操作期间捕获的所有 profile events。
* `settings` ([Map(LowCardinality(String), String)](/docs/zh/reference/data-types/index)) — 此操作实际使用的备份/恢复专用设置 (来自 `SETTINGS` 子句，包括默认值) 。敏感设置不会暴露。
* `engine_settings` ([Map(LowCardinality(String), String)](/docs/zh/reference/data-types/index)) — 备份引擎的 reader/writer 实际使用的设置 (例如 S3 `allow_native_copy`) 。当操作涉及多个引擎且无法用扁平 map 表示时，此项为空：incremental backups 和 restores、lightweight snapshot restores，以及非内部 `ON CLUSTER` 操作。

<div id="restore-atomicity">
  ## 恢复操作的原子性
</div>

`RESTORE` 不是事务性操作，失败时不会回滚。对于每个表，所有选定的 parts 都会先复制完成，然后才会附加；但附加阶段本身并非事务性的——parts 会逐个对外可见。各个表彼此独立处理。

**表之间彼此独立。** 即使同一条命令中的另一个表随后失败，已完成恢复的表也会保留在原处：

```sql theme={null}
RESTORE TABLE db.t0, TABLE db.t1
FROM S3('<endpoint>', '<access_key>', '<secret_key>')
SETTINGS
    allow_non_empty_tables = true;
```

如果此命令在 `db.t0` 已完全恢复、但 `db.t1` 尚未完成时失败，`db.t0` 仍会处于已恢复状态。

\*\*`PARTITIONS` 子句不是提交边界。\*\*它只用于选择要恢复表中的哪些 parts：

```sql theme={null}
RESTORE TABLE db.t0 PARTITIONS '2026-06-01', '2026-06-02', '2026-06-03'
FROM S3('<endpoint>', '<access_key>', '<secret_key>')
SETTINGS
    allow_non_empty_tables = true;
```

表中所有选定的 parts 都会先被复制，只有在它们全部就绪后才会统一附加。因此，如果此命令在复制阶段失败——例如分区 `2026-06-01` 已完全复制，但 `2026-06-02` 和 `2026-06-03` 仍未完成——那么 `2026-06-01` **不会**被提交，并且该表不会保留此次命令恢复的任何数据。复制阶段一旦完成并开始进入 attach 步骤后，parts 会逐个提交，因此如果在 attach 期间发生故障，表可能会处于部分恢复的状态，且无法回滚。

如果要让各个分区独立提交 (这样即使后续失败，已完成的分区也会保留下来，并且可以单独重试) ，请为每个分区分别运行一次 `RESTORE`，并在第一次之后使用 `SETTINGS allow_non_empty_tables = true`。
