跳到主要内容
版本:v3&v6

开启 ClickHouse 备份

备份 ClickHouse 的目的主要是用于备份审计日志数据。备份数据存储在 S3 中。

前置条件

  1. ONES 版本大于或等于 v6.1.94 或 v6.5.0。
  2. 根据快速开启数据备份文档,开启存储服务。

开启 ClickHouse 备份服务

private.yaml 中配置 clickhouseBackupEnabletrue

clickhouseBackupEnable: 'true'
clickhouseBackupCleanEnable: "true"

然后执行 make setup-ones

开启备份后可以立即执行一次备份,也可以不执行,执行命令如下:

make clickhouse-backup-now

如果在日志内容中看到BACKUP_CREATED,则说明备份成功。

备份策略

备份的时间

每周六23点做一次全量备份,每天分别在13点和20点各做一次增量备份。如果要修改备份时间,可以修改 clickhouseBackupCronSpecclickhouseFullBackupDayclickhouseFullBackupTime 的值。

clickhouseBackupCronSpec: "0 0 13,20,23 * * *"
clickhouseFullBackupDay: "6" # 全量备份的日期,0-6,0为周日, 6为周六
clickhouseFullBackupTime: "23" # 全量备份的时间, 0-23

备份的内容

默认只备份 audit_log 库的 audit_log 表,如果要备份其他库或表,可以修改 clickhouseBackupTables 的值。

clickhouseBackupTables: "audit_log.audit_log" # 需要备份的表,多个表用逗号隔开, 如 "audit_log.audit_log,default.task"

恢复备份数据

自动恢复

如果需要恢复备份数据,可以执行如下命令:

make restore-clickhouse

默认用最近一次的备份进行恢复,需要恢复的表由 clickhouseBackupTables 配置决定。

指定备份文件

如果自动恢复失败,可以手动指定备份文件进行恢复。

make clickhouse-restore BACKUP=http://<S3 endpoint>/clickhouse-backup/2025/01/02/incr_2025010206_base_audit_log_audit_log_20250102.zip

手动恢复

如果 ClickHouse 发生了重启或者想从另外的对象存储进行恢复,可以去对应的存储拿到备份包的地址进行恢复。此方法也适用于服务器环境的迁移,比如 Docker 迁移到 K3s 等。

rclone lsl s3:clickhouse-backup --config=/etc/clickhouse-backup/rclone.conf | sort -k2,2r
928 2025-01-16 14:00:00.188000000 2025/01/16/incr_2025011614_base_audit_log_audit_log_2025011613.zip
5929 2025-01-16 13:00:00.208000000 2025/01/16/base_audit_log_audit_log_2025011613.zip

# 选择最新的文件作为恢复文件,进入到 ClickHouse 执行如下 SQL
RESTORE TABLE audit_log.audit_log FROM S3('http://endpoint/clickhouse-backup/2024/12/31/incr_2024123108_base_audit_log_audit_log_20241231.zip', '<AccessKey>', '<Secret>');