Централізований control plane для бекапів баз даних — розклад, сховище, retention і live-логи в одному місці

💡 Усі статті, обговорення, новини про DevOps — в одному місці. Приєднуйтесь до DevOps спільноти!

Щоразу, коли я налаштовую бекапи баз даних, натрапляю на ту саму стіну.

Створити хмарний акаунт. Згенерувати API-ключі. Підняти бакет. Встановити pg_dump / mysqldump / mongodump на сервер (або сподіватися, що версії збігаються). Написати cron. Сподіватися, що на диску вистачить місця для тимчасового файлу. Вручну підключити політику зберігання.

Це працює — доки у вас не з’являться три бази, два регіони, і хтось запитає: «а можна подивитися логи бекапу в реальному часі?»

Тому я створив BackSpace — централізовану платформу керування бекапами для контейнеризованої й звичайної інфраструктури баз даних.

Працює в продакшені

Це не побічний проєкт, який пилиться на полиці. BackSpace уже обробляє реальні задачі бекапування:

МетрикаЗначення
Конфігурації бекапів25+
Усього запусків6 500+
Доступних копій400+
Успішність99%+
Зайнято сховища3+ ТБ
Сумарний розмір копій (за весь час)30+ ТБ

30+ ТБ — це все, що записано в сховище за 6 500+ запусків: фактичні файли бекапів, а не оригінальний обсяг баз. Стиснення gzip увімкнюється окремо для кожної конфігурації; деякі рушії (наприклад, xtrabackup) стискають самі, інші зберігають логічні дампи як є. Там, де стиснення є, сирі дані за дампами зазвичай у 2,5–4 рази більші — залежно від СУБД і вмісту.

Для віддаленого виконання платформа тримає три керовані агенти — по одному в кожному регіоні: Європа (Франкфурт), США (Схід) і Азійсько-Тихоокеанський регіон (Сінгапур). Оберіть Віддалене виконання (BackSpace Agents)
— решту ми беремо на себе: платформа сама призначає найближчого вільного агента за іменем хоста вашої бази.

Для сховища оберіть BackSpace Storage як профіль — під капотом сумісність з S3, але керуємо ми. Без акаунта AWS, без API-ключів, без налаштування бакета. Кожне завантаження автоматично дзеркалиться між кількома незалежними хмарними провайдерами — багатохмарна надмірність без другорядних бакетів і скриптів синхронізації.

Статистика

Що вміє платформа

BackSpace дає один центр керування, щоб:

  • Планувати і запускати бекапи для різних баз даних
  • Обирати, куди потрапляють копії (вбудоване хмарне сховище, власний S3/SFTP або локальні шляхи на агенті)
  • Дивитися логи в реальному часі під час виконання завдання
  • Автоматично застосовувати політики зберігання
  • Отримувати сповіщення, коли щось ламається

Журнали бекапу в реальному часі

Під капотом — сервер на Go (REST API + протокол агентів через WebSocket) і легкі агенти, які виконують бекапи через Docker.

Головна ідея: Docker у Docker, без утиліт на хості

Агентам BackSpace не потрібні клієнтські утиліти БД на сервері. Єдина жорстка вимога — Docker.

Коли стартує бекап, агент:

  1. Підтягує офіційний образ вашої СУБД і версії (postgres:16, mysql:8 тощо)
  2. Піднімає короткоживучий контейнер з потрібною утилітою (pg_dump, mysqldump, mongodump, redis-cli, clickhouse-backup, ...)
  3. Підключається до stdout до старту контейнера
  4. Передає вивід через буфери в пам’яті — gzip, за бажанням шифрування Age, контрольна сума SHA256 — прямо в сховище

Без тимчасових файлів на диску агента. Дані йдуть із контейнера напряму в сховище — вони ніколи не потрапляють на диск агента. І немає розбіжності версій між pg_dump (чи іншого інстурменту) на хості і вашим продакшен-Postgres (чи іншою СУБД).

Ізоляція — це перевага, а не побічний ефект. Сервер залишається чистим.

Два способи запуску бекапів

Агенти BackSpace (віддалене виконання)

Оберіть BackSpace Agents, якщо не хочете нічого встановлювати у себе.

BackSpace запускає керованих виконавців на платформі. Коли спрацьовує завдання, ми автоматично:

  1. Визначаємо регіон за іменем хоста бази
  2. Обираємо найменш завантаженого виконавця в найближчому регіоні — eu-frankfurt, us-east або ap-singapore
  3. Відправляємо завдання через WebSocket

База має бути доступна з наших воркерів. Віддалене виконання підтримує логічні бекапи (pg_dump, mysqldump, mongodump, redis-cli). Фізичні інструменти на кшталт pg_basebackup або xtrabackup потребують власного агента, який може монтувати томи з даними.

Агент BackSpace

Власний агент

Для приватних мереж, баз на localhost або середовищ zero-trust — розгорніть легкий агент самі:

services:
  backspace-agent:
    image: ghcr.io/backspaceguru/backspace-agent:latest
    container_name: backspace-agent
    restart: unless-stopped
    environment:
      - AGENT_ID=your_agent_id
      - AGENT_TOKEN=your_agent_token
      - AGENT_NAME=production-cluster-1
      - BACKEND_URL=https://app.backspace.guru
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - backspace-data:/data

volumes:
  backspace-data:

Агент сам підключається до центру керування через WebSocket. Вхідні порти на файрволі відкривати не потрібно — агент дістається до ваших баз зсередини мережі.

Якщо БД прив’язана до 127.0.0.1, запустіть агент у network_mode: host і вкажіть 127.0.0.1 як хост в інтерфейсі.

Власний агент — загальний вигляд

Власний агент

Сховище: вбудоване або своє

BackSpace Storage

Оберіть BackSpace Storage як профіль сховища — доступно одразу в кожному робочому просторі. Під капотом сумісність з S3, але ви не приносите свій бакет чи облікові дані. Ми даємо точку завантаження; за лаштунками кожен бекап автоматично дзеркалиться між кількома незалежними хмарними провайдерами.

Це та сама інфраструктура, на якій сьогодні тримаються 3+ ТБ активного сховища на платформі — надмірність вбудована, а не прикручена зверху.

За бажанням шифрування Age виконується на вашому боці перед завантаженням. Дані залишаються зашифрованими під час передачі та у сховищі.

BackSpace Storage

Власні сховища

Потрібен повний контроль? Підключіть сховище, сумісне з S3 (AWS, MinIO, Cloudflare R2, Wasabi), SFTP або локальні каталоги на агенті. Той самий потік передачі — ваш бакет.

Власне сховище

Підтримувані бази даних

СУБДІнструменти
PostgreSQLpg_dump, pg_dumpall, pg_basebackup (лише власний агент)
MySQL / MariaDBmysqldump, mariadb-dump, xtrabackup (лише власний агент), mariabackup (лише власний агент)
MongoDBmongodump
Redisredis-cli (знімки RDB)
Valkeyvalkey-cli (знімки RDB)
ClickHouseclickhouse-backup

У ClickHouse окремий шлях виконання — clickhouse-backup сам керує завантаженням, тому агент передає журнали, а не захоплює stdout.

Підтримувані бази даних

Що робить центр керування

Ви налаштовуєте бекапи в веб-панелі. Сервер бере решту на себе:

  • Розклад за cron з повторами та затримкою
  • Політика зберігання — старі запуски автоматично прибираються після кожного успішного бекапу
  • Журнали в реальному часі в інтерфейсі через WebSocket
  • Сповіщення — Telegram, Discord, Slack, зашифровані вебхуки
  • Статистика — частка успіху, пропускна здатність, тренди споживання сховища

Завислі завдання зупиняються самі. Історія залишається єдиним джерелом правди для кожної спроби бекапу.

Агенти не зберігають стан: вся конфігурація, розклади, облікові дані й історія запусків живуть у центрі керування.

Налаштування розкладу

Налаштування сповіщень

Для кого це

Якщо ви крутите бази в Docker, на віртуалках або на кількох майданчиках — і втомилися склеювати cron, shell-скрипти та хмарні SDK — BackSpace зроблений під таку роботу.

Це не заміна плану аварійного відновлення вашого DBA. Це спосіб перестати заново збирати інфраструктуру бекапів щоразу, коли додається нова база.

Спробувати

Панель v1.4.1 уже в продакшені. Якщо у вас власні агенти — оновіться до v1.4.0+ для повної сумісності з BackSpace Storage.

Я засновник — з радістю відповім у коментарях на питання про архітектуру, протокол агентів або що завгодно ще.

👍ПодобаєтьсяСподобалось11
До обраногоВ обраному5
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Підписатись на коментарі