开启 ClickHouse 备份
备份 ClickHouse 的目的主要是用于备份审计日志数据。备份数据存储在 S3 中。
前置条件
- ONES 版本大于或等于 v6.1.94 或 v6.5.0。
- 根据快速开启数据备份文档,开启存储服务。
开启 ClickHouse 备份服务
在 private.yaml
中配置 clickhouseBackupEnable
为 true
。
clickhouseBackupEnable: 'true'
clickhouseBackupCleanEnable: "true"
然后执行 make setup-ones
。
开启备份后可以立即执行一次备份,也可以不执行,执行命令如下:
make clickhouse-backup-now
如果在日志内容中看到BACKUP_CREATED
,则说明备份成功。
备份策略
备份的时间
每周六23点做一次全量备份,每天分别在13点和20点各做一次增量备份。如果要修改备份时间,可以修改 clickhouseBackupCronSpec
、clickhouseFullBackupDay
和clickhouseFullBackupTime
的值。
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>');