Skip to content

Backup and Restore

FrogDB uses RocksDB snapshots (not RDB files) for backup and recovery.

[snapshot]
snapshot-dir = "/var/lib/frogdb/snapshots"
snapshot-interval-secs = 3600 # Hourly snapshots
max-snapshots = 5

Trigger a manual snapshot: BGSAVE

Copy snapshots off-host for disaster recovery:

Terminal window
aws s3 sync /var/lib/frogdb/snapshots/ s3://my-backups/frogdb/$(date +%Y%m%d)/

A replica serves as a live backup. On primary failure, the orchestrator promotes the replica. See Replication.

For offline backups: stop a dedicated backup replica, copy its data directory, restart it. The replica catches up via partial sync if downtime is within WAL retention.

Requires snapshot + WAL retention:

[snapshot]
snapshot-interval-secs = 3600 # Hourly
[rocksdb]
min-wal-retention-secs = 86400 # 24-hour WAL retention

Recovery replays WAL entries from the nearest snapshot up to the target sequence number. With hourly snapshots, maximum WAL replay is 1 hour.

Terminal window
# 1. Stop server
systemctl stop frogdb
# 2. Replace data with backup
rm -rf /var/lib/frogdb/data/*
cp -r /path/to/backup/snapshot/* /var/lib/frogdb/data/
chown -R frogdb:frogdb /var/lib/frogdb/data/
# 3. Restart (WAL replay happens automatically)
systemctl start frogdb
# 4. Verify
redis-cli -p 6379 ping && redis-cli -p 6379 dbsize
Durability ModeBackup Consistency
asyncSnapshot may be ahead of WAL on disk
periodicSnapshot + WAL within sync-interval-ms of actual state
syncSnapshot + WAL fully consistent

For zero-loss backup, use sync durability mode with replica-based backup.