天天看點

使用Clickhouse原生BACKUP指令備份資料到S3

作者:運維筆談
使用Clickhouse原生BACKUP指令備份資料到S3

Clickhouse22.10版本支援使用BACKUP備份到S3,經過測試阿裡雲OSS也支援。

前期準備

  1. clickhouse版本需要22.10
  2. S3 endpoint, 比如 https://ck-doc-test.oss-cn-hangzhou.aliyuncs.com/backup-S3/
  3. Access key ID
  4. Secret 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)')

傳回如下,

使用Clickhouse原生BACKUP指令備份資料到S3

可以通過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');

繼續閱讀