Backup & Recovery
Strategies for protecting Surgewave data and recovering from failures.
Backup Strategies
Replication (Primary)
The primary protection mechanism is replication:
{
"Surgewave": {
"DefaultReplicationFactor": 3,
"MinInSyncReplicas": 2
}
}
With replication factor 3, data survives loss of 2 brokers.
Cross-Cluster Replication
Use MirrorMaker for disaster recovery:
surgewave mirror create \
--name prod-to-dr \
--source-alias prod \
--source-servers prod-kafka:9092 \
--target-alias dr \
--target-servers dr-kafka:9092 \
--sync-offsets
File-Level Backup
For offline backup of data directories:
# Stop broker or use consistent snapshot
surgewave broker shutdown --graceful
# Backup data directory
tar -czf surgewave-backup-$(date +%Y%m%d).tar.gz /var/surgewave/data
# Restart broker
surgewave broker start
Tiered Storage
Offload old data to cloud storage:
{
"Surgewave": {
"TieredStorage": {
"Enabled": true,
"Provider": "S3",
"Bucket": "surgewave-archive",
"LocalRetentionHours": 24
}
}
}
Recovery Procedures
Single Broker Failure
With replication, no action needed:
- Other replicas continue serving
- Restart failed broker
- Data resyncs automatically
# Check cluster status
surgewave cluster status
# After broker restart
surgewave cluster nodes
Data Directory Loss
If a broker loses its data directory:
- Start broker with empty data directory
- Broker re-registers with cluster
- Data replicates from other brokers
# Clear corrupt data
rm -rf /var/surgewave/data/*
# Start broker
surgewave broker start
Full Cluster Recovery
From backup:
- Stop all brokers
- Restore data directories from backup
- Start brokers
# On each broker
tar -xzf surgewave-backup.tar.gz -C /var/surgewave/
# Start in order (controller first)
surgewave broker start
Consumer Group Recovery
Reset consumer offsets after recovery:
# Reset to earliest (replay all)
surgewave groups reset my-group --topic my-topic --to-earliest
# Reset to specific offset
surgewave groups reset my-group --topic my-topic --to-offset 12345
# Reset to timestamp
surgewave groups reset my-group --topic my-topic --to-datetime "2024-01-15T10:00:00"
Disaster Recovery
DR Architecture
flowchart LR
subgraph Primary["Primary DC"]
P1[Broker 1]
P2[Broker 2]
P3[Broker 3]
end
subgraph DR["DR DC"]
D1[Broker 1]
D2[Broker 2]
D3[Broker 3]
end
Primary -->|MirrorMaker| DR
Failover Process
- Stop MirrorMaker
- Fail over consumer groups
- Point producers to DR cluster
# Preview failover
surgewave mirror failover \
--group my-consumer-group \
--source prod \
--target dr \
--dry-run
# Execute failover
surgewave mirror failover \
--group my-consumer-group \
--source prod \
--target dr \
--force
Failback Process
- Ensure primary is healthy
- Set up reverse replication
- Sync missed data
- Switch traffic back
Best Practices
- Test recovery regularly - Don't wait for a real disaster
- Document procedures - Runbooks for each scenario
- Monitor replication lag - Alert on high lag
- Use multiple availability zones - Spread brokers
- Automate where possible - Reduce human error
See Also
- Troubleshooting - Fix issues
- Clustering - Multi-broker setup
- Monitoring - Observability