备份与灾难恢复
AiHummer 的状态小且定义明确,这使得备份变得简单 —— 只要你记住 主密钥不在数据库中 并且必须单独保护。本页介绍了需要备份的内容、备份的方法以及如何恢复。
备份什么
有三件独立的事情需要保护:
| 什么 | 哪里 | 为什么 |
|---|---|---|
| 数据库 | PostgreSQL | 真相的来源——代理、对话、记忆、设置、加密的秘密 |
| 斑点 | AIHUMMER_BLOB_DIR |
数据库引用的媒体和文件附件 |
| 万能钥匙 | AIHUMMER_MASTER_KEY |
解密保险库; 从未存储在数据库中 |
[!DANGER] 备份
AIHUMMER_MASTER_KEY分别 并将其存放在其他地方 数据库转储。保管库在这个密钥下以信封加密形式加密—— 失去那个 主密钥和加密的秘密无法恢复,即使是完美的 数据库备份。
PostgreSQL 是事实来源
将数据库视为权威。推荐的基线是 每日 pg_dump 加 用于时间点恢复(PITR)的WAL归档 这样你就可以滚动到转储之间的任何时刻。
# Daily logical dump
pg_dump "$AIHUMMER_DATABASE_URL" --format=custom --file=aihummer-$(date +%F).dump
将转储与连续的 WAL 归档(PITR)配合使用,以便在快照之间进行细粒度恢复。
爱因斯坦的记忆也存在于数据库中:人类可读的标准 Markdown(MEMORY.md) 和 v2 向量存储是 预测 源自它,而不是独立的权威来源。
备份二进制大对象
媒体和文件附件位于 AIHUMMER_BLOB_DIR将此目录与数据库一起备份,以便恢复的对话仍然可以解析其附件。如果 AIHUMMER_BLOB_DIR 未配置,媒体/文件服务未启用,并且没有额外内容可复制。
aihummer 备份与还原命令
CLI 将例程打包成两个命令:
aihummer backup [dir] # write a backup into [dir]
aihummer restore <file> # restore from a backup file
将这些用于普通的操作备份和恢复。请参阅 命令行界面参考 有关命令。
[!WARNING] 仅恢复数据库并不是完整的恢复。也要恢复 blob 目录, 并确保 相同
AIHUMMER_MASTER_KEY存在于目标主机上 — 否则保险库无法解密。
灾难恢复
对于完整的主机丢失场景,请遵循 灾难恢复操作手册 (docs/runbooks/disaster-recovery.md)。恢复顺序为:
- 提供一台宿主机并安装相同版本的 AiHummer。
- 恢复 万能钥匙 进入
AIHUMMER_MASTER_KEY. - 恢复 数据库 (最新转储,然后如果使用了 WAL/PITR,通过它们进行前滚)。
- 恢复 二进制大对象目录 在
AIHUMMER_BLOB_DIR. - 恢复 模块配置和工件 (设置保存在数据库中; 从你的备份中恢复任何模块特定的配置文件)。
- 恢复 爱因斯坦记忆文件 —
MEMORY.md以及规范的 Markdown (记忆投影)——进入他们的目录(或者让它们从中重建 数据库)。 - 如果使用嵌入器边车,请恢复 v2 向量存储 (或重建 从恢复的数据库/Markdown中的索引).
- 启动服务(
aihummer up) 并验证/readyz和deploy/host/smoke.sh.
[!TIP] 也保持
AIHUMMER_MEDIA_TOKEN_SECRET使用您的主钥匙。它保持签署 媒体下载 URL 在重启和重建后仍然有效。
接下来去哪儿
- 用于验证恢复的探针和冒烟测试: systemd 和健康检查.
- 升级过程中的版本管理和迁移: 升级政策.