备份与恢复
需要一起备份哪些东西、按什么顺序、恢复后怎么核对。
备份哪些
| 对象 | 为什么 |
|---|---|
s0 的 ClickHouse 数据目录 | 账号、项目、密钥哈希、配置、看板、操作日志,以及 s0 上的事件 |
| 其它每个分片的 ClickHouse 数据目录 | 这些分片上的事件与聚合 |
| Redis 的 AOF | 已经返回成功、还没写进 ClickHouse 的事件在采集队列里 |
各节点的 data/geo | 可选。丢了之后按原来的地址再下载一次即可 |
**只备份 ClickHouse 会漏掉还在队列里的事件。**会话、验证码这些 Redis 里的临时数据丢了也没关系,最多让用户重新登录。
在单机 Compose 里,它们分别是卷 ch-data、redis-data、evstats-data。
顺序
- 对每个
evstats进程发 SIGTERM(docker compose stop evstats),等它把内存批次写进 ClickHouse 并确认,最多 15 秒。 - 备份各个 ClickHouse 的数据目录(停机拷贝,或者用 ClickHouse 自己的
BACKUP命令)。 - 备份 Redis 的 AOF。
- 启动
evstats。
不停机备份也可以,代价是备份时刻前后几秒的事件可能只在其中一边。
恢复
- 恢复各个 ClickHouse 的数据目录和 Redis 的 AOF。
- 用原来的 ClickHouse 地址启动(
EVS_CLICKHOUSE或-clickhouse):口令可以变,但必须还是原来那份数据。设置页里追加的分片地址存在s0里,随它一起恢复。 - 恢复的是更早的备份时,Redis 里的会话会失效,用户重新登录即可。
恢复后核对
/health:meta、每个分片、redis都是up,setup是ok。- 「系统 → 采集状态」:积压在下降,节点都在线。
- 「系统 → 关于」:版本和最近的结构变更符合预期。
- 挑一个项目,对比恢复前后同一段日期的 PV、UV。
注意
- 不要为了「清理」去截断
evs_agg_user_first,否则老用户会全部变成新访客。 - 本期没有按人删除事件的功能。确实需要时,由管理员在 ClickHouse 里自行处理,并先备份。