Files
Baradb/docs/ru/backup.md
T

3.1 KiB

Резервное копирование и восстановление

Онлайн снэпшоты

BaraDB поддерживает онлайн снэпшоты без остановки сервера. Снэпшот захватывает согласованное представление на момент времени с помощью MVCC.

Создание снэпшота

import barabadb/core/backup

var bm = newBackupManager()
bm.createSnapshot("/backup/baradb_2025-01-15")

Через CLI

./build/baradadb --snapshot --output=/backup/snapshot.db

Через HTTP API

curl -X POST http://localhost:9470/api/backup \
  -H "Content-Type: application/json" \
  -d '{"destination": "/backup/snapshot.db"}'

Автоматические бэкапы

# Ежедневный снэпшот в 2 ночи
0 2 * * * /usr/local/bin/baradadb --snapshot --output=/backup/baradb_$(date +\%Y\%m\%d).db

# Хранить последние 7 дней
find /backup -name "baradb_*.db" -mtime +7 -delete

Восстановление на момент времени (PITR)

BaraDB использует WAL для восстановления на момент времени.

Архивирование WAL

BARADB_WAL_ARCHIVE_DIR=/backup/wal \
BARADB_WAL_ARCHIVE_INTERVAL_MS=60000 \
./build/baradadb

Восстановление из снэпшота + WAL

# Восстановление из снэпшота
./build/baradadb --recover \
  --checkpoint=/backup/snapshot.db \
  --wal-dir=/backup/wal

# Восстановление до конкретного LSN
./build/baradadb --recover \
  --checkpoint=/backup/snapshot.db \
  --wal-dir=/backup/wal \
  --target-lsn=15420

# Восстановление до конкретного времени
./build/baradadb --recover \
  --checkpoint=/backup/snapshot.db \
  --wal-dir=/backup/wal \
  --target-time="2025-01-15T10:30:00Z"

Восстановление через SQL

RECOVER TO TIMESTAMP '2026-05-07T12:00:00';

Сценарии аварийного восстановления

Сценарий 1: Повреждение файла

cp /backup/sstables/000012.sst ./data/sstables/
./build/baradadb --rebuild-index

Сценарий 2: Полная потеря данных

cp /backup/snapshot.db ./data/
./build/baradadb --recover --wal-dir=/backup/wal
curl http://localhost:9470/health

Сценарий 3: Отказ узла кластера

BARADB_RAFT_NODE_ID=newnode \
BARADB_RAFT_PEERS=node1:9001,node2:9001 \
./build/baradadb

Проверка бэкапов

./build/baradadb --recover \
  --checkpoint=/backup/snapshot.db \
  --data-dir=/tmp/verify_data

curl http://localhost:9470/api/admin/check

Рекомендации

  1. Регулярно тестируйте восстановление
  2. Храните бэкапы вне сайта (S3, GCS, Azure Blob)
  3. Шифруйте бэкапы
  4. Мониторьте задачи бэкапа
  5. Документируйте RTO/RPO