Clickhouse22.10版本支持使用BACKUP备份到S3,经过测试阿里云OSS也支持。
前期准备clickhouse版本需要22.10S3 endpoint, 比如 https://ck-doc-test.oss-cn-hangzhou.aliyuncs.com/backup-S3/Access key IDSecret access key创建初始备份(基础全量备份)BACKUP TABLE default.test_data TO S3('https://ck-doc-test.oss-cn-hangzhou.aliyuncs.com/backup-S3/my_backup', 'ABC123(你的阿里云AK)', 'Abc+123(你的阿里云SK)')
返回如下,
可以通过select * from system.backups where id='de442b75-a66c-4a3c-a193-f76f278c70f3'
查询备份进度,所以备份到S3默认是异步进行。
增量备份BACKUP TABLE default.test_data TO S3('https://ck-doc-test.oss-cn-hangzhou.aliyuncs.com/backup-S3/my_incremental', 'ABC123', 'Abc+123') SETTINGS base_backup = S3('https://ck-doc-test.oss-cn-hangzhou.aliyuncs.com/backup-S3/my_backup', 'ABC123(你的阿里云AK)', 'Abc+123(你的阿里云SK)')
同理会产生一个id提供查询备份情况。
从增量备份恢复(恢复到新表test_data_oss方式)RESTORE TABLE default.test_data AS default.test_data_oss FROM S3('https://ck-doc-test.oss-cn-hangzhou.aliyuncs.com/backup-S3/my_incremental', 'ABC123', 'Abc+123')
简单验证恢复可以通过查询两张表的count数目是否一致简单验证。
以上举例是进行表备份,同理库也是支持,把TABLE改为DATABASE即可
配置文件方式配置S3在/etc/clickhouse-server/config.d添加一个备份到S3存储配置,如下示例
<clickhouse> <storage_configuration> <disks> <s3_plain> <type>s3_plain</type> <endpoint></endpoint> <access_key_id></access_key_id> <secret_access_key></secret_access_key> </s3_plain> </disks> <policies> <s3> <volumes> <main> <disk>s3</disk> </main> </volumes> </s3> </policies> </storage_configuration> <backups> <allowed_disk>s3_plain</allowed_disk> </backups></clickhouse>然后我们的备份和还原命令就可以简单如下:
BACKUP TABLE data TO Disk('s3_plain', 'cloud_backup');
RESTORE TABLE data AS data_restored FROM Disk('s3_plain', 'cloud_backup');