Skip to main content
Skip to main content

system.backups

Description

Contains a list of all BACKUP or RESTORE operations with their current states and other properties. Note, that table is not persistent and it shows only operations executed after the last server restart.

Columns

Restore atomicity

RESTORE is not transactional and does not roll back on failure. For each table, all selected parts are copied before any are attached, but the attach phase itself is not transactional — parts are made visible one at a time. Tables are processed independently.

Tables are independent. A table whose restore completes stays in place even if another table in the same command later fails:

RESTORE TABLE db.t0, TABLE db.t1
FROM S3('<endpoint>', '<access_key>', '<secret_key>')
SETTINGS
    allow_non_empty_tables = true;

If this command fails after db.t0 has been fully restored but db.t1 has not finished, db.t0 remains restored.

The PARTITIONS clause is not a commit boundary. It only selects which parts of a table are restored:

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;

All selected parts of the table are copied first and attached only once every one of them is ready. So if this command fails during the copy phase — e.g. after partition 2026-06-01 has been fully copied but 2026-06-02 and 2026-06-03 have not finished — then 2026-06-01 is not committed and the table is left with no restored data from this command. Once the copy phase completes and the attach step begins, parts are committed one at a time, so a failure during attach can leave the table partially restored, without rollback.

To commit partitions independently (so a completed partition survives a later failure and can be retried in isolation), run a separate RESTORE per partition, using SETTINGS allow_non_empty_tables = true after the first.