Disaster Recovery Runbook

Procedures for backup, restore, and disaster recovery scenarios.

RTO & RPO

  • RTO: 4 hours

  • RPO: 1 hour

Backup Procedures

Database Backups

# Manual backup
kubectl exec mysql-0 -n dev -- \
  mysqldump -uroot -p --all-databases | \
  gzip > mysql-backup-$(date +%Y%m%d).sql.gz

PV Snapshots

Use Velero for PV snapshots:

velero backup create dev-backup --include-namespaces dev

Restore Procedures

Full Cluster Recovery

  1. Provision new K3s cluster

  2. Install ArgoCD

  3. Restore Velero backups

  4. Sync ArgoCD applications

  5. Restore database from backup

Database Restore

# Restore MySQL
kubectl exec -i mysql-0 -n dev -- \
  mysql -uroot -p < mysql-backup.sql

Disaster Scenarios

Complete Cluster Failure

  1. Provision replacement cluster

  2. Install core services (ArgoCD, sealed-secrets)

  3. Restore from Velero backup

  4. Verify all services

Database Corruption

  1. Stop applications

  2. Restore from last known good backup

  3. Replay transaction logs if available

  4. Restart applications

Full runbook includes detailed recovery procedures for all scenarios.