Syntax
Configure backup destinations for disk
Configure a backup destination for local disk
In the examples below you will see the backup destination specified asDisk('backups', '1.zip').To use the
Disk backup engine it is necessary to first add a file specifying
the backup destination at the path below:
backups and then adds that disk to
the allowed_disk list of backups:
Configure a backup destination for S3 disk
It is also possible toBACKUP/RESTORE to S3 by configuring an S3 disk in the
ClickHouse storage configuration. Configure the disk like this by adding a file to
/etc/clickhouse-server/config.d as was done above for the local disk.
BACKUP/RESTORE for S3 disk is done in the same way as for local disk:
- This disk shouldn’t be used for
MergeTreeitself, only forBACKUP/RESTORE - If your tables are backed by S3 storage and the types of the disks are different,
it doesn’t use
CopyObjectcalls to copy parts to the destination bucket, instead, it downloads and uploads them, which is very inefficient. In this case prefer using theBACKUP ... TO S3(<endpoint>)syntax for this use-case.
Usage examples of backup/restore to local disk
Backup and restore a table
Run the following commands below to create the test database and table we will be making a backup and restoration of in this example:Setup commands
Setup commands
Create the database and table:Preprocess and one thousand rows of random data:Next you will need to create a file specifying the backup destination at the
path below:
If clickhouse-server is running you will need to restart it for the changes to
take effect.
Query
Response
Query
Response
The above
RESTORE would fail if the table test.table contains data.
The setting allow_non_empty_tables=true allows RESTORE TABLE to insert data
into non-empty tables. This will mix earlier data in the table with the data extracted from the backup.
This setting can therefore cause data duplication in the table, and should be used with caution.Incremental backups to disk
A base backup in ClickHouse is the initial, full backup from which the following incremental backups are created. Incremental backups only store the changes made since the base backup, so the base backup must be kept available to restore from any incremental backup. The base backup destination can be set with settingbase_backup.
Incremental backups depend on the base backup. The base backup must be kept available
to be able to restore from an incremental backup.
test_db.test_table2 with command:
Securing a backup
Backups written to disk can have a password applied to the file. The password can be specified using thepassword setting.
Password protection is only supported for ZIP archives (
.zip, .zipx).
The backup path must end with .zip or .zipx for the password to be accepted.
Using a password with any other format - including tar archives and non-archive paths - will
result in a BAD_ARGUMENTS error: Password is not applicable, backup cannot be encrypted.password setting:
Backups as tar archives
Backups can be stored not only as zip archives, but also as tar archives. The functionality is the same as for zip, except that password protection isn’t supported for tar archives. Additionally, tar archives support a variety of compression methods. To make a backup of a table as a tar:tar.gz.tgztar.bz2tar.lzma.tar.zst.tzst.tar.xz
Compression settings
The compression method and level of compression can be specified using settingcompression_method and compression_level respectively.
Restore specific partitions
If specific partitions associated with a table need to be restored, these can be specified. Let’s create a simple partitioned table into four parts, insert some data into it and then take a backup of only the first and fourth partitions:Setup
Setup