Движок базы данных Backup позволяет мгновенно подключить таблицу/базу данных из резервных копий в режиме только для чтения.
Движок базы данных Backup работает как с инкрементными, так и с полными резервными копиями.
CREATE DATABASE backup_database
ENGINE = Backup('database_name_inside_backup', 'backup_destination')
Пунктом назначения резервной копии может быть любой допустимый пункт назначения, например Disk, S3, File.
При использовании пункта назначения резервной копии Disk запрос для создания базы данных из резервной копии выглядит так:
CREATE DATABASE backup_database
ENGINE = Backup('database_name_inside_backup', Disk('disk_name', 'backup_name'))
Параметры движка
database_name_inside_backup — Имя базы данных в резервной копии.
backup_destination — Пункт назначения резервной копии.
Рассмотрим пример с пунктом назначения резервной копии Disk. Сначала настроим диск резервных копий в storage.xml:
<storage_configuration>
<disks>
<backups>
<type>local</type>
<path>/home/ubuntu/ClickHouseWorkDir/backups/</path>
</backups>
</disks>
</storage_configuration>
<backups>
<allowed_disk>backups</allowed_disk>
<allowed_path>/home/ubuntu/ClickHouseWorkDir/backups/</allowed_path>
</backups>
Пример использования. Создадим тестовую базу данных и таблицы, вставим немного данных, а затем создадим резервную копию:
CREATE DATABASE test_database;
CREATE TABLE test_database.test_table_1 (id UInt64, value String) ENGINE=MergeTree ORDER BY id;
INSERT INTO test_database.test_table_1 VALUES (0, 'test_database.test_table_1');
CREATE TABLE test_database.test_table_2 (id UInt64, value String) ENGINE=MergeTree ORDER BY id;
INSERT INTO test_database.test_table_2 VALUES (0, 'test_database.test_table_2');
CREATE TABLE test_database.test_table_3 (id UInt64, value String) ENGINE=MergeTree ORDER BY id;
INSERT INTO test_database.test_table_3 VALUES (0, 'test_database.test_table_3');
BACKUP DATABASE test_database TO Disk('backups', 'test_database_backup');
Итак, теперь у нас есть резервная копия test_database_backup; давайте создадим базу данных Backup:
CREATE DATABASE test_database_backup ENGINE = Backup('test_database', Disk('backups', 'test_database_backup'));
Теперь мы можем выполнить запрос к любой таблице в базе данных:
SELECT id, value FROM test_database_backup.test_table_1;
┌─id─┬─value──────────────────────┐
│ 0 │ test_database.test_table_1 │
└────┴────────────────────────────┘
SELECT id, value FROM test_database_backup.test_table_2;
┌─id─┬─value──────────────────────┐
│ 0 │ test_database.test_table_2 │
└────┴────────────────────────────┘
SELECT id, value FROM test_database_backup.test_table_3;
┌─id─┬─value──────────────────────┐
│ 0 │ test_database.test_table_3 │
└────┴────────────────────────────┘
С этой базой данных Backup также можно работать как с любой обычной базой данных. Например, выполнять запросы к её таблицам:
SELECT database, name FROM system.tables WHERE database = 'test_database_backup':
┌─database─────────────┬─name─────────┐
│ test_database_backup │ test_table_1 │
│ test_database_backup │ test_table_2 │
│ test_database_backup │ test_table_3 │
└──────────────────────┴──────────────┘
Последнее изменение 10 июня 2026 г.