Backup & Recovery

Backup and restore QilbeeDB data.

Snapshots#

Create Snapshot#

# HTTP API
curl -X POST http://localhost:7474/admin/snapshot

Response:

{
  "snapshot_id": "20240115-103000",
  "path": "/data/snapshots/20240115-103000",
  "size_bytes": 1073741824
}

List Snapshots#

curl http://localhost:7474/admin/snapshots

Restore Snapshot#

# Stop database
docker stop qilbeedb

# Restore snapshot
cp -r /data/snapshots/20240115-103000/* /data/

# Start database
docker start qilbeedb

File System Backup#

Backup Data Directory#

# Stop database
docker stop qilbeedb

# Backup data
tar -czf qilbeedb-backup-$(date +%Y%m%d).tar.gz /data/qilbeedb/

# Start database
docker start qilbeedb

Restore from Backup#

# Stop database
docker stop qilbeedb

# Restore data
tar -xzf qilbeedb-backup-20240115.tar.gz -C /

# Start database
docker start qilbeedb

Online Backups#

For minimal downtime, use snapshots:

# Create snapshot (database stays online)
curl -X POST http://localhost:7474/admin/snapshot

# Backup snapshot directory
cp -r /data/snapshots/latest /backup/

Automated Backups#

Cron Job#

# Add to crontab
0 2 * * * /usr/local/bin/qilbee-backup.sh

# qilbee-backup.sh
#!/bin/bash
BACKUP_DIR="/backup/qilbeedb"
DATE=$(date +%Y%m%d)

# Create snapshot
curl -X POST http://localhost:7474/admin/snapshot

# Backup to S3
aws s3 sync /data/snapshots/latest s3://my-backups/qilbeedb/$DATE/

Backup Strategy#

Daily Backups#

  • Automated snapshots
  • Retain for 7 days

Weekly Backups#

  • Full file system backup
  • Retain for 4 weeks

Monthly Backups#

  • Archive to cold storage
  • Retain for 12 months

Disaster Recovery#

Recovery Time Objective (RTO)#

Target: < 1 hour

Recovery Point Objective (RPO)#

Target: < 24 hours (daily backups)

Recovery Steps#

  1. Provision new instance
  2. Restore latest backup
  3. Verify data integrity
  4. Update DNS/load balancer
  5. Resume operations

Verification#

Test restore procedures regularly:

# Restore to test instance
docker run -d --name qilbeedb-test \
  -v /backup/latest:/data \
  qilbeedb/qilbeedb:latest

# Verify data
curl http://localhost:7475/health
curl http://localhost:7475/admin/stats

Next Steps#