Files
Baradb/docs/ru/backup.md
T

120 lines
3.1 KiB
Markdown

# Резервное копирование и восстановление
## Онлайн снэпшоты
BaraDB поддерживает онлайн снэпшоты без остановки сервера. Снэпшот захватывает согласованное представление на момент времени с помощью MVCC.
### Создание снэпшота
```nim
import barabadb/core/backup
var bm = newBackupManager()
bm.createSnapshot("/backup/baradb_2025-01-15")
```
### Через CLI
```bash
./build/baradadb --snapshot --output=/backup/snapshot.db
```
### Через HTTP API
```bash
curl -X POST http://localhost:9470/api/backup \
-H "Content-Type: application/json" \
-d '{"destination": "/backup/snapshot.db"}'
```
### Автоматические бэкапы
```bash
# Ежедневный снэпшот в 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
```bash
BARADB_WAL_ARCHIVE_DIR=/backup/wal \
BARADB_WAL_ARCHIVE_INTERVAL_MS=60000 \
./build/baradadb
```
### Восстановление из снэпшота + WAL
```bash
# Восстановление из снэпшота
./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
```sql
RECOVER TO TIMESTAMP '2026-05-07T12:00:00';
```
## Сценарии аварийного восстановления
### Сценарий 1: Повреждение файла
```bash
cp /backup/sstables/000012.sst ./data/sstables/
./build/baradadb --rebuild-index
```
### Сценарий 2: Полная потеря данных
```bash
cp /backup/snapshot.db ./data/
./build/baradadb --recover --wal-dir=/backup/wal
curl http://localhost:9470/health
```
### Сценарий 3: Отказ узла кластера
```bash
BARADB_RAFT_NODE_ID=newnode \
BARADB_RAFT_PEERS=node1:9001,node2:9001 \
./build/baradadb
```
## Проверка бэкапов
```bash
./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**