本节概述了 ClickHouse 中的备份与恢复。有关各种备份方法的更 详细说明,请参阅侧边栏中相应方法的 页面。
简介
MergeTree 家族引擎且包含超过
50 GB 数据的表。不过,这些保护机制并不能覆盖所有可能的情况,
问题仍然可能发生。
为了有效降低人为失误可能带来的影响,你应当提前
认真制定数据备份与恢复的
策略。
每家公司可用的资源和业务需求各不相同,因此
不存在一种适用于所有场景的 ClickHouse 备份与恢复通用方案。
适用于 1 GB 数据的方法,很可能并不适用于数十
PB 的数据。可选的方法有很多,它们各有优缺点,
本文档的这一部分将对其进行介绍。比较好的做法是
组合使用多种方法,而不是只依赖一种,以弥补各自的
不足。
请记住,如果你完成了备份却从未尝试过恢复,
那么当你真正需要恢复时,很可能无法正常工作 (或者至少
恢复耗时会超出业务可接受的范围) 。因此,无论你选择哪种备份
方案,都务必同时将恢复流程自动化,并定期在备用的
ClickHouse 集群上进行演练。
备份可以:
备份类型
- 全量备份,适用于较小的数据库或关键数据。
- 增量备份,适用于较大的数据库,或需要频繁且经济高效地执行备份的场景。
- 两者结合,例如每周执行一次全量备份,每天执行一次增量备份。
同步与异步备份
BACKUP 和 RESTORE 命令也可以标记为 ASYNC。在这种情况下,
备份命令会立即返回,备份过程则在后台运行。
如果命令未标记为 ASYNC,备份过程则会同步执行,
命令会一直阻塞,直到备份完成。
并发与非并发备份
压缩与未压缩备份
compression_method 和 compression_level 设置启用压缩。
创建备份时,可指定:
使用命名集合
- 对没有管理员权限的用户隐藏凭据
- 通过集中存储复杂配置来简化命令
- 在各类操作中保持一致性
- 避免凭据暴露在查询日志中
备份系统表、日志表或访问管理相关表
_log 后缀的表 (如
query_log、part_log) ,可以像其他任何表一样进行备份和恢复。
如果你的使用场景依赖于分析历史数据——例如,使用 query_log
跟踪查询性能或排查问题——建议将这些表纳入备份策略。不过,如果不需要这些表中的历史数据,
则可以将其排除,以节省备份存储空间。
与访问管理相关的系统表,例如 users、roles、row_policies、
settings_profiles 和 quotas,在备份和恢复操作期间会进行特殊处理。
当这些表被包含在备份中时,其内容会被导出到一个特殊的
accessXX.txt 文件中,该文件包含了用于创建
和配置这些访问实体的等效 SQL 语句。在恢复时,恢复过程
会解析这些文件,并重新执行 SQL 命令以重建用户、
角色及其他配置。此功能确保 ClickHouse 集群的访问控制
配置可以作为集群整体配置的一部分进行备份和恢复。
此功能仅适用于通过 SQL 命令管理的配置
(即“SQL 驱动的访问控制与账户管理”) 。
在 ClickHouse server 配置文件 (如 users.xml)
中定义的访问配置不会包含在备份中,也无法通过此方法恢复。
常规语法
命令概览
设置
S3 专用设置
Azure 专用设置
管理与故障排查
backup 命令会返回一个 id 和 status,并且可以使用该 id
查询备份状态。这对于检查长时间运行的 ASYNC
备份进度非常有用。下面的示例展示了尝试覆盖现有备份文件时
发生的失败:
system.backups 表外,所有备份和恢复操作也会记录在系统日志表
system.backup_log 中: