使用Clickhouse原生BACKUP命令备份数据到S3

运维有笔谈 2024-03-07 01:13:12

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');

0 阅读:0

运维有笔谈

简介:感谢大家的关注