Novij Backup Agent
Изменения
- Рабочие копии файлов и SQL dumps можно вынести в `agent.staging_dir` на
отдельном диске. Tar и скачанные архивы остаются в `temp_dir`; прерванная
отправка по-прежнему продолжается из неизменяемого checkpoint. Старые конфиги
сохраняют прежнее размещение. Документация описывает разнесённые ночные timers.
- ZK-купон, список блоков, пополнение и проверка баланса используют одну
финансовую сессию на primary из активного Registry. Роль узла проверяется
до платежа; задержка репликации другого Relay не вызывает повторную оплату.
- Повторный сбой во время `resume` не теряет уже проверенные блоки из конца
контрольной точки. Обновление checkpoint отвергает изменённый исходный архив.
- Временная недоступность Relay при чтении блока обрабатывается ограниченными
повторами с новым nonce. Неопределённые платежи, отказ в доступе и ошибки
целостности не повторяются; после исчерпания попыток ошибка остаётся видимой.
- Интервал fleet-профиля в календарных днях сохраняет время timer и корректно
проходит границы месяцев, лет и часовых поясов. Незавершённая копия продолжается,
а успешно продолжённый снимок не вызывает лишнее повторное снятие источников.
- Fleet-профиль запускает и очищает только выбранное задание. Отдельные Docker
projects можно сохранять по собственному расписанию вместе с файлами, образами
и SQL dumps; общий lock предотвращает одновременную работу профилей.
- Повторные ссылки на один блок в batch сохраняют данные во всех позициях.
Кэш Registry у Storage и ZK находится в приватном каталоге агента, включая
запуск systemd без `HOME`; права общего `/tmp` больше не затрагиваются.
- Выбранные endpoints сохраняются в рамках backend-сессии. Новый транспортный
клиент не повторяет discovery и не выбирает Storage отдельно от billing identity.
- Commit блоков и платёжные nonce создаются штатными batch-запросами Relay.
Контрольное чтение указывает выдавший nonce Relay для проверки без лишнего
межнодового перехода; Storage принимает только адрес из доверенной топологии.
- Прерванная отправка сохраняет tar и приватный checkpoint. Команда `resume`
продолжает тот же снимок без повторных dumps; проверенные блоки переиспользуются.
Fleet snapshot продолжает незавершённые отправки перед новым циклом.
Полный архив от старого агента можно проверить и зарегистрировать для продолжения.
- Большие архивы обрабатываются потоком с ограниченным расходом RAM. Снимки v2
используют независимые сжатые и зашифрованные блоки с границами по содержимому.
Неизменившиеся блоки переиспользуются после контрольного чтения и расшифровки.
- Каждый manifest содержит полный состав снимка. Большие manifests разделяются
на аутентифицированные части; retention сохраняет все блоки активных снимков.
- Fleet snapshot обнаруживает проекты, Docker images, MySQL/MariaDB, PostgreSQL,
SQLite и Redis. Нетранзакционные MySQL-таблицы защищаются READ locks на время
дампа; PostgreSQL сохраняет базы и роли, SQLite использует online backup.
- Ошибки подготовки и retention отправляются в настроенный Telegram transport.
Успешное уведомление содержит recovery-код для восстановления потерянного
local index через `novij-backup recover-index`.
- При failover агент обнаруживает биллинговый кошелёк нового Storage до создания
платёжных nonce. Уже подтверждённые элементы batch повторно не записываются.
Ожидание ответа записи увеличено до 45 секунд для штатного quorum commit.
- Публикация проверяет и сохраняет историю пакетов через HTTPS даже при SSH-ключе
без права чтения. Повторная CMake configure сохраняет включённую сборку тестов.
Совместимость и эксплуатация
- Старые снимки v1 читаются; для восстановления v2 нужна актуальная версия агента.
- Для staging и несжатого tar требуется до двух размеров исходных файлов и dumps
на локальном диске. Снимок файлов выполняется онлайн и не создаёт единой
атомарной точки времени между независимыми сервисами.
- Каждый production agent использует отдельный ZK-купон. Ключи расшифровки,
пароли, конфигурацию, index и купон храните в отдельном закрытом recovery-наборе.
- Права, владельцев, ACL и service-конфигурацию проверяйте при восстановлении:
файловый снимок не является образом диска для автоматического bare-metal DR.
- Обновление: `sudo novij-backup update`. Настройки и ключи сохраняются.