Operations Guide

Этот документ описывает эксплуатационные процедуры для iobackup в проде.

1) Базовые принципы

Для разработки/ревизии документации (перед релизом) используйте:

2) Управление секретами

Рекомендуемый минимальный набор:

Рекомендации:

3) Ротация ключей S3

Процедура:

  1. Создать новый ключ в S3.
  2. Обновить env у агента (S3_ACCESS_KEY, S3_SECRET_KEY).
  3. Перезапустить агент.
  4. Прогнать тестовый backup в отдельный prefix.
  5. Убедиться, что upload успешен.
  6. Отключить старый ключ.

Проверка после ротации:

iobackupctl --server http://127.0.0.1:8735 --token-env IOBACKUP_API_TOKEN job run filesystem-s3-streaming
iobackupctl --server http://127.0.0.1:8735 --token-env IOBACKUP_API_TOKEN run list

4) Очистка старых данных в S3

Основной механизм — retention policy по manifest metadata.

Дополнительная ручная очистка prefix (если нужно):

aws s3 rm s3://<bucket>/<prefix>/ --recursive --endpoint-url <s3-endpoint> --region <region>

Делайте manual delete только после проверки, что объекты не нужны для restore/аудита.

5) Плановые проверки (ежедневно/еженедельно)

Ежедневно:

Еженедельно:

5.1) Ротация run-логов и метаданных

Для ограничения роста локального хранилища задайте:

CLI-флаги эквиваленты:

Значение <=0 для *_RETENTION_DAYS отключает соответствующую очистку.

5.1.1) Per-type metadata retention (0.17-fix.60 foundation)

IOBACKUP_DB_RETENTION_DAYS остаётся как legacy/fallback, но целевая модель — per-type retention:

См. docs/architecture/metadata.md.

5.1.2) Metadata DB maintenance (0.17-fix.60)

Команды iobackupctl metadata работают только с metadata DB (не скачивают artifacts):

iobackupctl metadata check --db /var/lib/iobackup/agent.db
iobackupctl metadata backup --db /var/lib/iobackup/agent.db --output /var/lib/iobackup/metadata-backups/
iobackupctl metadata export --db /var/lib/iobackup/agent.db --output /var/lib/iobackup/exports/metadata.json

Важно:

5.2) Лог агента и дублирование task-логов в metadata DB

Подробности и значения по умолчанию — в examples/iobackup-agent.env.example и флагах iobackup-agent --help.

6) Мониторинг

Агент экспортирует метрики по endpoint:

curl -sS http://127.0.0.1:8735/metrics

Ключевые метрики:

Рекомендуемые алерты:

7) Аварийный регламент

Если backup начал падать:

  1. Проверить health API агента (GET /api/v1/health, при необходимости GET /api/v1/ready — 503 если не готов; краткая сводка checks/degraded — см. docs/reference/capabilities.md). Для инвентаря: GET /api/v1/agent/facts (tool discovery) и GET /api/v1/capabilities (feature gates и зарегистрированные провайдеры).
  2. Проверить наличие утилит (pg_dump, mysqldump, aws).
  3. Проверить env секреты.
  4. Проверить доступность destination (S3 endpoint/права на bucket).
  5. Проверить последние task errors через CLI/API.

Если падают webhooks:

8) Обновление агента

Рекомендуемый порядок:

  1. Сборка новой версии.
  2. Тест на staging job.
  3. Переключение прод-агента на новую версию.
  4. Контрольный run.
  5. Проверка artifacts/manifests/notifications.

Рекомендуемый pre-release regression smoke:

bash ./examples/tests/run-full-matrix.sh

Этот прогон проверяет local/ssh/s3 для mysql, postgres, vault, openldap, clickhouse, filesystem.

Зарезервированные сценарии (не для прогона как готовые jobs): каталог examples/future/ — см. examples/future/README.md.

9) Runtime troubleshooting (0.17-fix.80)

9.1 Interrupted recovery

Если агент перезапущен во время run:

9.2 Concurrency locks (CONCURRENCY_LOCKED)

9.3 Idempotency replay

Повторный POST …/runs с тем же HTTP Idempotency-Key и тем же job_uid возвращает тот же run_id. Тот же ключ для другого job_uid даёт конфликт IDEMPOTENCY_KEY_CONFLICT.

9.4 Disk pressure

Поведение зависит от политики агента: режим reject_new_runs может вернуть DISK_PRESSURE_LOW_SPACE и не стартовать новые run; режим warn позволяет старт с предупреждением. См. конфиг и docs/reference/error-codes.md.

9.5 Расписание backup metadata DB

Делайте iobackupctl metadata backup (или файловый snapshot) перед обновлением агента, перед storage-миграциями 0.18+, периодически в каталог metadata-backups/. Включайте в резерв и identity/ (agent.identity / docs/architecture/agent-identity.md).

9.6 Потерян sidecar manifest

Если в destination остался только data-файл без sidecar, опирайтесь на запись BackupManifest в bolt и на операционные бэкапы БД; полное восстановление только из object storage может быть невозможно (см. docs/features/retention/retention.md, docs/reference/manifest-schema.md).

9.7 Диагностика через capabilities / facts

Не путать с jobs/validate?deep=1 — там допускаются дорогие проверки подготовки job.