AiHummer
Русский
ВойтиЛичный кабинет
v1.2.x
{ }Swagger

Резервные копии и аварийное восстановление

v1.2.x · обновлено 2026-07-21

Для полного восстановления сохраните три компонента: базу данных, мастер-ключ и конфигурацию/артефакты установленных модулей (включая каталог медиафайлов). Помните: мастер-ключ не лежит в базе и его нужно защищать отдельно. Эта страница описывает, что копировать, как и как восстанавливаться.

Что копировать

Защищать нужно три независимые вещи:

Что Где Зачем
База данных PostgreSQL Источник истины — агенты, диалоги, память, настройки, зашифрованные секреты
Медиафайлы AIHUMMER_BLOB_DIR Медиа и вложения, на которые ссылается база
Мастер-ключ AIHUMMER_MASTER_KEY Расшифровывает хранилище секретов; никогда не хранится в базе

[!DANGER] Резервная копия базы без AIHUMMER_MASTER_KEY не позволит расшифровать секреты. Создавайте резервную копию AIHUMMER_MASTER_KEY отдельно и храните не там, где дамп базы. Хранилище секретов зашифровано конвертно под этим ключом — потеряете мастер-ключ, и зашифрованные секреты невосстановимы, даже с идеальной резервной копией базы.

PostgreSQL — источник истины

Считайте базу авторитетной. Рекомендуемая схема — ежедневный pg_dump плюс архивация WAL для восстановления на момент времени (PITR), чтобы можно было восстановиться на любой момент между дампами.

# Ежедневный логический дамп
pg_dump "$AIHUMMER_DATABASE_URL" --format=custom --file=aihummer-$(date +%F).dump

Дополните дампы непрерывной архивацией WAL (PITR) для точного восстановления между снимками.

Память Einstein тоже живёт в базе: человекочитаемый канонический Markdown (MEMORY.md) и векторное хранилище v2 — её проекции, выводимые из базы, а не отдельные авторитетные хранилища.

Резервная копия медиафайлов

Медиа и вложения лежат в каталоге AIHUMMER_BLOB_DIR. Создавайте резервную копию этого каталога вместе с базой, чтобы восстановленные диалоги могли разрешать свои вложения. Если AIHUMMER_BLOB_DIR не задан, сервис медиа/файлов не активен и копировать нечего.

Команды aihummer backup и restore

CLI оборачивает рутину в две команды:

aihummer backup [dir]      # записать резервную копию в [dir]
aihummer restore <file>    # восстановить из файла резервной копии

Ожидаемый результат: backup печатает путь созданного файла резервной копии; restore завершается без ошибок, после чего /readyz отвечает 200. Используйте их для обычных операционных копий и восстановлений. Связанные команды см. в справочнике CLI.

[!WARNING] Восстановление одной только базы — это не полное восстановление. Восстановите также каталог медиафайлов и убедитесь, что на целевом хосте присутствует тот же AIHUMMER_MASTER_KEY — иначе хранилище секретов не расшифровать.

Аварийное восстановление

Для сценария полной потери хоста следуйте runbook по аварийному восстановлению (docs/runbooks/disaster-recovery.md). Порядок восстановления:

  1. Подготовьте хост и установите ту же версию AiHummer.
  2. Восстановите мастер-ключ в AIHUMMER_MASTER_KEY.
  3. Восстановите базу (последний дамп, затем накат через WAL/PITR при наличии).
  4. Восстановите каталог медиафайлов в AIHUMMER_BLOB_DIR.
  5. Восстановите конфигурацию и артефакты установленных модулей (настройки лежат в базе; отдельные файлы конфигурации модулей верните из копии).
  6. Восстановите файлы памяти EinsteinMEMORY.md и канонический Markdown (проекция памяти) — в их каталог (или дайте перестроить их из базы).
  7. Если используется sidecar-эмбеддер, восстановите векторное хранилище v2 (или перестройте индексы из восстановленной базы/Markdown).
  8. Поднимите службы (aihummer up) и проверьте через /readyz и deploy/host/smoke.sh.

Регулярно выполняйте тестовое восстановление в изолированном окружении и фиксируйте фактические RPO/RTO — резервная копия, которую ни разу не восстанавливали, не считается проверенной.

[!TIP] Храните AIHUMMER_MEDIA_TOKEN_SECRET вместе с мастер-ключом. Он сохраняет подписанные URL скачивания медиа валидными между перезапусками и пересборками.

Куда дальше