> ## 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.

> Tabela de sistema com registros de log sobre operações de `BACKUP` e `RESTORE`.

# system.backups

<div id="description">
  ## Descrição
</div>

Contém uma lista de todas as operações `BACKUP` ou `RESTORE`, com seus estados atuais e outras propriedades. Observe que essa tabela não é persistente e mostra apenas as operações executadas após a última reinicialização do servidor.

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

* `id` ([String](/docs/pt-BR/reference/data-types/index)) — ID da operação, que pode ser passado via SETTINGS id=... ou ser um UUID gerado aleatoriamente.
* `name` ([String](/docs/pt-BR/reference/data-types/index)) — Nome da operação, uma string como `Disk('backups', 'my_backup')`
* `base_backup_name` ([String](/docs/pt-BR/reference/data-types/index)) — Nome da operação do backup base, uma string como `Disk('backups', 'my_base_backup')`
* `query_id` ([String](/docs/pt-BR/reference/data-types/index)) — ID da consulta que iniciou o backup.
* `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/pt-BR/reference/data-types/index)) — Status da operação de backup ou restauração.
* `error` ([String](/docs/pt-BR/reference/data-types/index)) — A mensagem de erro, se houver.
* `start_time` ([DateTime64(6)](/docs/pt-BR/reference/data-types/index)) — O momento em que a operação foi iniciada.
* `end_time` ([DateTime64(6)](/docs/pt-BR/reference/data-types/index)) — O momento em que a operação foi concluída.
* `num_files` ([UInt64](/docs/pt-BR/reference/data-types/index)) — O número de arquivos armazenados no backup.
* `total_size` ([UInt64](/docs/pt-BR/reference/data-types/index)) — O tamanho total dos arquivos armazenados no backup.
* `num_entries` ([UInt64](/docs/pt-BR/reference/data-types/index)) — O número de entradas no backup, ou seja, o número de arquivos dentro da pasta se o backup for armazenado como uma pasta.
* `uncompressed_size` ([UInt64](/docs/pt-BR/reference/data-types/index)) — O tamanho não comprimido do backup.
* `compressed_size` ([UInt64](/docs/pt-BR/reference/data-types/index)) — O tamanho comprimido do backup.
* `files_read` ([UInt64](/docs/pt-BR/reference/data-types/index)) — Retorna o número de arquivos lidos durante o RESTORE a partir deste backup.
* `bytes_read` ([UInt64](/docs/pt-BR/reference/data-types/index)) — Retorna o tamanho total dos arquivos lidos durante o RESTORE a partir deste backup.
* `ProfileEvents` ([Map(LowCardinality(String), UInt64)](/docs/pt-BR/reference/data-types/index)) — Todos os profile events coletados durante esta operação.
* `settings` ([Map(LowCardinality(String), String)](/docs/pt-BR/reference/data-types/index)) — Configurações específicas de backup/restauração efetivamente usadas nesta operação (da cláusula `SETTINGS`, incluindo os valores padrão). Configurações sensíveis não são expostas.
* `engine_settings` ([Map(LowCardinality(String), String)](/docs/pt-BR/reference/data-types/index)) — Configurações efetivamente usadas pelo leitor/gravador do engine de backup (por exemplo, S3 `allow_native_copy`). Fica vazio quando a operação envolve mais de um engine que um map simples não consegue representar: backups incrementais e restaurações, restaurações lightweight de snapshot e operações `ON CLUSTER` não internas.

<div id="restore-atomicity">
  ## Atomicidade da restauração
</div>

`RESTORE` não é transacional e não faz rollback em caso de falha. Para cada tabela, todas as partes selecionadas são copiadas antes que qualquer uma delas seja anexada, mas a própria fase de anexação não é transacional — as partes ficam visíveis uma de cada vez. As tabelas são processadas de forma independente.

**As tabelas são independentes.** Uma tabela cuja restauração for concluída permanece no lugar, mesmo que outra tabela no mesmo comando falhe depois:

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

Se este comando falhar depois que `db.t0` tiver sido totalmente restaurado, mas a restauração de `db.t1` ainda não tiver terminado, `db.t0` continuará restaurado.

**A cláusula `PARTITIONS` não é um limite de commit.** Ela apenas seleciona quais partes de uma tabela serão restauradas:

```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;
```

Todas as partes selecionadas da tabela são copiadas primeiro e anexadas somente quando todas estiverem prontas. Portanto, se esse comando falhar durante a fase de cópia — por exemplo, depois que a partição `2026-06-01` tiver sido totalmente copiada, mas `2026-06-02` e `2026-06-03` ainda não tiverem terminado — então `2026-06-01` **não** será confirmada, e a tabela ficará sem nenhum dado restaurado por esse comando. Quando a fase de cópia termina e a etapa de anexação começa, as partes são confirmadas uma a uma, portanto uma falha durante a anexação pode deixar a tabela parcialmente restaurada, sem rollback.

Para confirmar as partições de forma independente (para que uma partição concluída sobreviva a uma falha posterior e possa ser repetida isoladamente), execute um `RESTORE` separado para cada partição, usando `SETTINGS allow_non_empty_tables = true` após a primeira.
