Перейти к содержимому

Резервное копирование

Единственный stateful-компонент платформы — PostgreSQL. Всё остальное (API-служба, консоль, агенты) — stateless; потеря подов не приводит к потере данных.

ЧтоМетодЧастота
PostgreSQLmanaged backup / pg_dump + WAL-Gежесуточно + PITR
JWT private key (Secret)snapshot вашего хранилища секретовпри изменении
Helm values всех компонентовGit-репозиторий инфраструктурыпри изменении
TLS-сертификатыsecret-snapshotпри изменении
Список подключённых кластеров с company tokenхранится в БД, отдельного бэкапа не требует

Для managed-сервисов (Yandex Managed PostgreSQL и другие managed-PostgreSQL-сервисы вашего провайдера) включите:

  • ежедневный автобэкап (обычно уже включён по умолчанию),
  • PITR с retention 7–30 дней,
  • периодическое тестовое восстановление в staging.
Окно терминала
pg_dump -h pg.internal -U opsman -d opsman -Fc \
-f /backups/opsman-$(date +%F).dump

Для PITR используйте WAL-G / pgBackRest.

  1. Подготовьте пустую БД на новом инстансе:

    CREATE USER opsman WITH PASSWORD '***';
    CREATE DATABASE opsman OWNER opsman;
  2. Восстановите из бэкапа:

    Окно терминала
    pg_restore -h new-pg.internal -U opsman -d opsman \
    /backups/opsman-YYYY-MM-DD.dump
  3. Обновите DATABASE_URL в values.prod.yaml API-службы и выполните helm upgrade.

  4. Проверьте:

    • curl -sf https://api-opsman.company.com/healthz → 200
    • Тестовый логин
    • Данные Dashboard за последние 7 дней

Если JWT-ключ потерян безвозвратно:

  1. Сгенерируйте новый.
  2. Обновите secret в Kubernetes.
  3. Rolling restart API-службы.
  4. Все активные сессии пользователей станут невалидными — потребуется повторный логин.
  1. Развернуть новый Kubernetes-кластер (или использовать резервный).
  2. Развернуть PostgreSQL, восстановить из бэкапа.
  3. Применить Helm-чарты из Git (infrastructure-as-code).
  4. Восстановить JWT-ключ и TLS-сертификаты.
  5. Проверить: логин, UI, ingest, уведомления.

Ориентировочное время восстановления с нуля — 60–90 минут.

Раз в месяц выполняйте тестовое восстановление в staging-окружении и прогоняйте smoke-тест: логин, открытие Dashboard, наличие данных за последние 7 дней. Без регулярных проверок бэкапы могут оказаться непригодными в момент, когда они нужны.