Altinity / clickhouse-backup

Tool for easy ClickHouse backup and restore using object storage for backup files.

Home Page:https://altinity.com

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Ability to restore schema by running ATTACH TABLE statement for --schema, if data already present

Slach opened this issue · comments

Discussed in #867

Originally posted by tadus21 March 8, 2024
Hey,
We have a use case where we store data in ReplicatedMergeTree table which keeps it in different disks according to the TTL.
We noticed that in scenario where:
DISK_A stores table metadata and data, DISK_B stores just data and by accident DISK_A is lost
we can just manually move sql file with the attach table statement to DISK_A/clickhouse/metadata directory (if we have it backed up). After db restart, the table will be attached to the ClickHouse with all the parts from DISK_B present without manually moving them to detach folder and reattaching. This saves time making replica healthy because then ZK only have to restore data from DISK_A from the another replica.
I noticed that in backup metadata folder, table creation query have UUID in it so in theory backup tool could recreate the same scenario by running ATTACH TABLE instead of CREATE TABLE? Would it make sense to provide additional flag to restore command which would define whether ATTACH or CREATE statement should be ran for schema restoration? I seen that something similar is happening when restore_as_attach is set to true, but its only relevant when on data restoration flow.
If this make sense I would gladly contribute on this feature.

ATTACH TABLE
already requires overwrite metatada/db/table.sql