Дайджесты новостей
Постановочный натюрморт с двумя накопителями бэкапов Databasus и зеленым индикатором верифицированного восстановления.

Databasus: надежный Open Source инструмент автоматизации бэкапов с проверкой восстановления

В среде системных администраторов, SRE и DevOps-инженеров давно ходит мрачная, но стопроцентно правдивая поговорка: «Все специалисты делятся на две категории: те, кто еще не делает регулярные бэкапы, и те, кто уже обязательно проверяет восстановление из них».

Можно годами любоваться на аккуратные зеленые галочки в cron-задачах, складывать гигабайты архивов pg_dump на сетевой диск и искренне верить, что критические данные бизнеса находятся в полной безопасности. А потом внезапно наступает черная пятница, серверная база данных повреждается аппаратным сбоем файловой системы, дежурный инженер скачивает свежий вчерашний дамп и... с леденящим ужасом видит ошибку повреждения контрольной суммы gzip, незавершенные транзакции или несовместимость версий системных каталогов СУБД. Резервная копия на диске лежала, а восстановить данные в продакшен физически невозможно.

Именно эту фундаментальную инженерную проблему решает открытая self-hosted платформа Databasus, созданная независимым сообществом разработчиков под свободной лицензией Apache 2.0.

Концепция верификации: восстанавливаем прежде, чем поверить

Главная архитектурная особенность Databasus, которая выгодно отличает его от десятков типовых скриптов и коммерческих утилит — встроенный автоматический контур тестового восстановления (Restore Verification).

Смотри, как устроен этот контур «под капотом»:

  1. По заданному cron-расписанию система подключается к целевой базе данных и снимает физический или логический снапшот.
  2. Дамп моментально шифруется на стороне сервера стойким алгоритмом AES-256-GCM с использованием мастер-ключа, заданного в переменных окружения.
  3. Databasus автоматически поднимает временный изолированный контейнер в Docker (песочницу) с целевой версией базы данных.
  4. Созданный зашифрованный дамп разворачивается в этой изолированной песочнице с нуля.
  5. Запускается серия быстрых проверочных тестов целостности (smoke tests): проверка системных каталогов, валидация внешних ключей, контрольный подсчет строк в ключевых таблицах и проверка индексов.
  6. Только после того, как временная база успешно подтвердила свою работоспособность, бэкап помечается проверенным статусом и отправляется в долгосрочное внешнее хранилище, а тестовый контейнер бесследно уничтожается.

Если при тестовом развертывании произошел малейший сбой — дежурная команда моментально получает алерт в Telegram, Slack, Discord или через вебхук с полным логом ошибки. Никаких неприятных сюрпризов в момент реальной аварии в продакшене!

Поддержка СУБД, хранилищ и Point-in-Time Recovery

Платформа написана на Go с современным веб-интерфейсом на React и TypeScript. Архитектура изначально рассчитана на работу с популярнейшими базами данных: PostgreSQL (включая гранулярное восстановление на определенный момент времени — Point-in-Time Recovery через WAL-архивацию), MySQL, MariaDB и MongoDB.

В качестве целевых хранилищ поддерживается практически всё, что умеет принимать байты по сети:

  • Локальные диски и NFS-монтирования;
  • Любые S3-совместимые хранилища (Amazon S3, Cloudflare R2, MinIO, Wasabi, Яндекс Облако);
  • Google Cloud Storage и Google Drive;
  • Защищенные протоколы SFTP и FTP.

Давай посмотрим, как легко развернуть Databasus на собственном сервере через Docker Compose:

services:
  databasus-server:
    image: ghcr.io/databasus/databasus:latest
    container_name: databasus
    restart: unless-stopped
    ports:
      - "8080:8080"
    environment:
      - DB_DRIVER=sqlite
      - DB_SOURCE=/data/databasus.db
      - ENCRYPTION_MASTER_KEY=base64:7xK3L9mQ8wP1vN4zR6tY2uI5oA8sD0fG
      - DOCKER_HOST=unix:///var/run/docker.sock
    volumes:
      - databasus_data:/data
      - /var/run/docker.sock:/var/run/docker.sock
    networks:
      - internal-net

volumes:
  databasus_data:

networks:
  internal-net:
    driver: bridge

Заметь важную деталь: проброс сокета Docker хоста необходим именно для того, чтобы платформа могла самостоятельно оркестрировать запуск и остановку временных контейнеров-песочниц во время регулярной верификации снапшотов.

Автоматизация задач через CLI и API

Помимо наглядного веб-дашборда, где графики показывают динамику роста размера баз и статус бэкапов, Databasus предоставляет мощный REST API и удобную консольную утилиту для встраивания в CI/CD и скрипты автоматизации:

# Проверка текущего статуса запланированных политик резервного копирования
databasus-cli policy list --format table

# Принудительный запуск внепланового бэкапа перед накатыванием миграции схемы
databasus-cli backup run --database prod-postgres-cluster --verify-restore=true

# Просмотр детального отчета последней верификации восстановления
databasus-cli report get --backup-id bkp-20261031-040012 --show-logs

Если ты следишь за новинками экосистемы СУБД, рекомендуем также вспомнить наш свежий обзор инструментов экосистемы PostgreSQL, где мы разбирали сопутствующие утилиты для глубокого аудита кластеров.

Подводные камни и границы применимости на больших объемах

Важно трезво оценивать границы применимости автоматической верификации. Если твоя база данных весит 50 гигабайт, тестовое развертывание в песочнице займет пару минут и практически не нагрузит сервер. Но если объем базы перевалил за 5 терабайт, поднимать полный контейнер на каждый ночной бэкап будет накладно по дисковому вводу-выводу (IOPS) и времени.

Для гигантских баз данных правильная стратегия — сочетать физические снапшоты дисковых томов LVM/CSI с непрерывным архивированием журналов WAL (PITR), а полное тестовое развертывание в Databasus запускать по расписанию раз в неделю на выделенном стенде проверки восстановления.

Но для подавляющего большинства веб-сервисов среднего размера Databasus — это идеальная страховка от ночных кошмаров с нечитаемыми дампами.