ClickHouse 部署、备份与恢复规范
本文档给出 dbbot 在 ClickHouse 场景下的公开规范,用于统一部署、备份、恢复和日常运维的基本要求。
1. 目标
- 建立统一的 ClickHouse 集群交付规范。
- 降低备份和恢复对生产业务的影响。
- 通过 inventory 守卫、手工确认和 manifest 减少高风险误操作。
- 为原集群恢复和异地恢复提供一致的执行口径。
2. 基础环境要求
2.1 操作系统与硬件
- 建议使用
x86_64架构,并满足SSE4.2指令集要求。 - 建议关闭透明大页和 SWAP。
- 建议统一时区、文件描述符限制和系统安全基线。
2.2 网络与时间
- 集群节点之间应保持稳定低时延网络。
- 全集群应统一 NTP 或 Chrony。
- 控制节点需要同时访问 ClickHouse 节点和协调节点。
2.3 存储
- 生产优先使用 SSD。
- 建议数据盘与系统盘分离。
- 备份盘应与数据盘隔离,并保证 ClickHouse 进程可读写。
3. 拓扑与对象规范
- 默认文档示例使用
3x2拓扑,但这只是参考模型。 - 分布式表用于统一访问入口,本地表承载实际数据。
- 生产场景建议优先使用
Replicated*MergeTree系列表。 - 命名规范应保持一致,例如:
<domain>_<topic>_local:本地表<domain>_<topic>:分布式表
4. 执行控制规范
4.1 inventory 分工
- 部署使用
hosts.deploy.ini - 备份使用
hosts.backup.ini - 恢复使用
hosts.restore.ini
4.2 inventory purpose
建议在 [all:vars] 中显式设置:
dbbot_inventory_purpose=deploydbbot_inventory_purpose=backupdbbot_inventory_purpose=restore
4.3 手工确认
- 部署默认启用手工确认。
- 恢复默认启用手工确认。
- 生产环境不建议长期关闭此类门禁。
5. 备份与恢复原则
5.1 备份原则
- 每个分片只选择一个副本执行物理备份,避免重复 IO。
- 使用
safe_ts作为跨分片时间口径。 - 通过 manifest 保存批次号、路径、状态、时间和对象范围。
5.2 恢复原则
- 主副本执行全量恢复。
- 其他副本执行结构恢复,再通过复制追平。
- 对象清理、放流和业务回补属于恢复 Runbook 的必要步骤,不应省略。
6. 安全与文档规范
- 文档示例必须使用占位符,不写真实密码和真实内网地址。
- 生产操作应保留批次号、执行日志和 manifest,便于审计。
- 高危命令执行前需要双人复核恢复对象与 inventory 范围。
7. 推荐验收项
部署完成后,至少验证以下内容:
system.clusters中的拓扑是否完整。system.replicas中是否存在只读、堆积或延迟异常。- 备份批次是否成功生成 manifest。
- 恢复完成后,总量、分片数据和复制状态是否符合预期。