sections.operations
Резервное копирование и восстановление
Ночной цикл очистки по сроку хранения, скрипты резервного копирования в `scripts/backup/` и документированный путь восстановления для Mongo, Postgres и MinIO.
Резервное копирование и восстановление
Skrum — универсальная панель управления проектами с ИИ: командный чат, задачи и спринты, нативные видеовстречи и входящая активность кода в одном рабочем пространстве, где каждое действие ИИ ждёт подтверждения человека.
Резервное копирование — ответственность оператора. Skrum поставляет скрипты и цикл хранения; вы задаёте расписание, внешнее хранилище, мониторинг и учебные восстановления.
Цели восстановления и расписание
- Рекомендуемая частота: полный набор каждую ночь и учебное восстановление раз в квартал. Если потеря суток недопустима, выполняйте копирование каждые шесть часов или чаще.
- RPO: не больше интервала между успешными наборами плюс длительность прерванного запуска. Ночное копирование даёт 24 часа только при мониторинге и успехе каждого запуска.
- RTO: измеряйте восстановлением объёма, близкого к производственному. Четыре часа — начальная эксплуатационная цель; фактический замер является главным.
- Хранение: начальная политика — 7 ежедневных, 4 еженедельных и 12 ежемесячных полных наборов, минимум одна копия вне хоста приложения и основного объектного хранилища.
Настройте оповещения о пропуске запуска, ненулевом коде или отсутствии MANIFEST.txt. Не удаляйте последний исправный набор до полной записи нового и его контрольных сумм.
Создание резервной копии
./scripts/backup/backup-all.sh
Скрипты читают только переменные резервного копирования из корневого .env, если они отсутствуют в процессе. Явно заданные переменные, включая пустые, имеют приоритет; файл не выполняется через source или eval, секреты не выводятся.
Обязательны MONGODB_URI, DATABASE_URL, S3_ENDPOINT, S3_ACCESS_KEY, S3_SECRET_KEY и S3_BUCKET. BACKUP_TARGET=local пишет в BACKUP_DIR; BACKUP_TARGET=s3 загружает под BACKUP_S3_PREFIX. Mongo, Postgres и объекты снимаются последовательно; для согласованной спокойной точки восстановления приостановите входящие записи и workers.
Цикл очистки по сроку хранения
Ежедневная задача BullMQ retention-sweep архивирует без потерь сообщения, комментарии к задачам и события графа работы, подлежащие очистке, в холодное хранилище по пути archive/{accountId}/{kind}/{sha256}.ndjson.gz перед удалением. Число дней хранения по тарифу соответствует historyDays (30 / 90 / 365 / неограниченно). На тарифах без ограничения задача ничего не делает.
Ожидания от восстановления
Восстановление разрушительно: Mongo использует --drop, Postgres — --clean --if-exists, а зеркало объектов удаляет лишнее. Запланируйте обслуживание, остановите записи API/workers и проверьте назначения.
./scripts/backup/restore-all.sh <BACKUP_SET_DIR_OR_S3_URI>
Команда проверяет манифест и все хеши до изменений, затем восстанавливает Mongo, Postgres и MinIO. До открытия записей:
- Запустите API и workers и дождитесь успешных healthchecks.
- Проверьте вход, чтение пространства/проекта/задачи/сообщения и загрузку известного файла.
- Проверьте очереди, миграции и свежие события аудита.
- Запишите время, набор и результат smoke-теста для обновления измеренного RTO.
Частые вопросы
- Управляемый хостинг? На управляемом тарифе резервное копирование — наша ответственность.
- Можно ли изменить окно хранения? Да —
retention_policiesдля каждого аккаунта позволяет только уменьшить срок. - Заменяет ли хранение приложения аварийные копии? Нет, жизненный цикл полных наборов — отдельная эксплуатационная политика.
См. также: Документация Skrum