Saltar al contenido principal
El motor de base de datos Backup permite adjuntar al instante una tabla/base de datos desde copias de seguridad en modo de solo lectura. El motor de base de datos Backup funciona tanto con copias de seguridad incrementales como no incrementales.

Crear una base de datos

CREATE DATABASE backup_database
ENGINE = Backup('database_name_inside_backup', 'backup_destination')
El destino de la copia de seguridad puede ser cualquier destino de copia de seguridad válido, como Disk, S3 o File. Con el destino de copia de seguridad Disk, la consulta para crear una base de datos desde una copia de seguridad es así:
CREATE DATABASE backup_database
ENGINE = Backup('database_name_inside_backup', Disk('disk_name', 'backup_name'))
Parámetros del motor
  • database_name_inside_backup — Nombre de la base de datos en la copia de seguridad.
  • backup_destination — Destino de la copia de seguridad.

Ejemplo de uso

Veamos un ejemplo con un destino de copia de seguridad Disk. Primero, configuremos el disco de copias de seguridad en 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>
Ejemplo de uso. Creemos una base de datos de prueba y unas tablas, insertemos algunos datos y luego creemos una copia de seguridad:
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');
Ahora que ya tenemos la copia de seguridad test_database_backup, vamos a crear la base de datos Backup:
CREATE DATABASE test_database_backup ENGINE = Backup('test_database', Disk('backups', 'test_database_backup'));
Ahora podemos consultar cualquier tabla de la base de datos:
SELECT id, value FROM test_database_backup.test_table_1;

┌─id─┬─value──────────────────────┐
0test_database.test_table_1
└────┴────────────────────────────┘

SELECT id, value FROM test_database_backup.test_table_2;

┌─id─┬─value──────────────────────┐
0test_database.test_table_2
└────┴────────────────────────────┘

SELECT id, value FROM test_database_backup.test_table_3;

┌─id─┬─value──────────────────────┐
0test_database.test_table_3
└────┴────────────────────────────┘
También es posible trabajar con esta base de datos Backup como con cualquier base de datos normal. Por ejemplo, consultar sus tablas:
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 │
└──────────────────────┴──────────────┘
Última modificación el 10 de junio de 2026