Этот документ описывает эксплуатационные процедуры для
iobackup в проде.
Для разработки/ревизии документации (перед релизом) используйте:
make site-docs — пересобрать
site/docs/*.html из docs/*.md (требуется
pandoc).make docs-check — локальные проверки
ссылок/версий/таблиц и идемпотентности генерации (см.
scripts/docs_check.py).Рекомендуемый минимальный набор:
POSTGRES_BACKUP_PASSWORDMYSQL_BACKUP_PASSWORDS3_ACCESS_KEYS3_SECRET_KEYIOBACKUP_API_TOKEN (если включен
--auth-enabled)IOBACKUP_WEBHOOK_TOKEN (если используются
webhooks)Рекомендации:
Процедура:
S3_ACCESS_KEY,
S3_SECRET_KEY).Проверка после ротации:
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Основной механизм — retention policy по manifest metadata.
Дополнительная ручная очистка prefix (если нужно):
aws s3 rm s3://<bucket>/<prefix>/ --recursive --endpoint-url <s3-endpoint> --region <region>Делайте manual delete только после проверки, что объекты не нужны для restore/аудита.
Ежедневно:
Еженедельно:
Для ограничения роста локального хранилища задайте:
IOBACKUP_RUN_LOGS_RETENTION_DAYS — сколько дней хранить
task run-логи в runs-log-dir;IOBACKUP_DB_RETENTION_DAYS — сколько дней хранить
историю в metadata DB;IOBACKUP_RETENTION_CLEANUP_INTERVAL — интервал фоновой
очистки (например 6h).CLI-флаги эквиваленты:
--run-logs-retention-days--db-retention-days--retention-cleanup-intervalЗначение <=0 для *_RETENTION_DAYS
отключает соответствующую очистку.
IOBACKUP_DB_RETENTION_DAYS остаётся как legacy/fallback,
но целевая модель — per-type retention:
metadata_retention.runs_daysmetadata_retention.task_logs_daysmetadata_retention.events_days (reserved)metadata_retention.audit_days (reserved)metadata_retention.verification_daysmetadata_retention.hook_results_days (reserved)metadata_retention.retention_events_daysmetadata_retention.job_revisions_days /
metadata_retention.manifests_days: 0 = keep
forever (until explicit delete)См. docs/architecture/metadata.md.
Команды 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Важно:
metadata export всегда применяет redaction и учитывает
export policy (см. docs/architecture/metadata.md и
docs/operator/support-bundle.md).metadata compact — offline-only (в 0.17-fix.60
возвращает METADATA_COMPACT_REQUIRES_OFFLINE).IOBACKUP_LOG_LEVEL — уровень лога агента:
debug, info, warning,
error.IOBACKUP_LOG_OUTPUT — куда писать лог агента:
stderr (удобно с journalctl),
file, both.IOBACKUP_TASK_LOG_DUP_DB — дублировать строки per-task
логов в bbolt; тогда HTTP-выдача логов задачи может собрать текст из БД,
если файла нет или он пуст.Подробности и значения по умолчанию — в
examples/iobackup-agent.env.example и флагах
iobackup-agent --help.
Агент экспортирует метрики по endpoint:
curl -sS http://127.0.0.1:8735/metricsКлючевые метрики:
iobackup_api_requests_total,
iobackup_api_request_duration_secondsiobackup_runs_started_total,
iobackup_runs_finished_total,
iobackup_run_duration_secondsiobackup_tasks_started_total,
iobackup_tasks_finished_total,
iobackup_task_duration_secondsiobackup_backup_bytes_total,
iobackup_artifacts_created_totaliobackup_provider_operations_total,
iobackup_provider_operation_duration_secondsiobackup_notifications_total,
iobackup_notification_attemptsiobackup_artifact_downloads_total,
iobackup_artifact_deletes_totalРекомендуемые алерты:
runs_finished_total{status="failed"} выше базовой
нормы;tasks_finished_total{status="failed"} по
конкретному source/destination;api_request_duration_seconds;notifications_total{status="failed"}.Если backup начал падать:
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 и
зарегистрированные провайдеры).pg_dump,
mysqldump, aws).Если падают webhooks:
success/partial_success по фактическому
результату задачи;notification_events, не блокируя
backup pipeline.Рекомендуемый порядок:
Рекомендуемый 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.
Если агент перезапущен во время run:
running / pending run/task
переводятся в терминальный interrupted при
восстановлении;interrupted терминальный —
повторное исполнение оформляется новым run.CONCURRENCY_LOCKED)owner_run_id и lock_key в теле
ошибки / логах.metadata check и инспекция bucket locks (см.
docs/architecture/bbolt-storage-layout.md).Повторный POST …/runs с тем же HTTP
Idempotency-Key и тем же
job_uid возвращает тот же
run_id. Тот же ключ для другого
job_uid даёт конфликт
IDEMPOTENCY_KEY_CONFLICT.
Поведение зависит от политики агента: режим
reject_new_runs может вернуть
DISK_PRESSURE_LOW_SPACE и не стартовать
новые run; режим warn позволяет старт с
предупреждением. См. конфиг и
docs/reference/error-codes.md.
Делайте iobackupctl metadata backup
(или файловый snapshot) перед обновлением агента, перед
storage-миграциями 0.18+, периодически в каталог
metadata-backups/. Включайте в резерв и
identity/ (agent.identity /
docs/architecture/agent-identity.md).
Если в destination остался только data-файл без sidecar, опирайтесь
на запись BackupManifest в bolt и на
операционные бэкапы БД; полное восстановление только из object storage
может быть невозможно (см.
docs/features/retention/retention.md,
docs/reference/manifest-schema.md).
GET /api/v1/capabilities — feature
gates, зарегистрированные провайдеры, maturity, кэш provider
health.GET /api/v1/agent/facts — ОС,
timezone, redacted пути, обнаруженные CLI.Не путать с jobs/validate?deep=1 — там
допускаются дорогие проверки подготовки job.