05 — Backups & Disaster Recovery

Backup coverage, retention policies, and disaster-recovery procedures for all stateful systems: MongoDB rs0, Supabase PostgreSQL, Traccar MySQL, and Wasabi S3.

CRITICAL GAP: The last verified MongoDB backup restore test is 4+ months old. The backup-exporter checks Wasabi for backup-status JSON files — if alerts are not firing, confirm the files are actually current. A restore drill is overdue.

Key Documents

DocumentDescription
01-backups.mdBackup improvement plan — coverage gaps, recommendations

Backup Coverage by System

SystemBackup methodLocationFrequencyLast verified
MongoDB rs0mongodump → Wasabi S3p24-infra bucketnightly>4 months ago — CRITICAL
Supabase PostgreSQLSupabase managed backups (daily) + pg_dumpSupabase + WasabidailyUnknown
Traccar MySQLmysqldump → local + Wasabip24-infra bucketnightlyUnknown
n8n PostgreSQL (bms-4)pg_dump via cronWasabinightlyUnknown
Grafana configGit (monitoring/)GitHubon commitCurrent

Wasabi S3 Bucket Layout

Bucket: p24-infra — region eu-central-2 — endpoint s3.eu-central-2.wasabisys.com

FolderContents
thanos/Prometheus TSDB blocks (2h chunks, uploaded by Thanos sidecar)
pdfs/Generated fleet inspection PDFs
Bucket rootBackup status JSON files polled by backup-exporter

Backup Exporter

The backup-exporter container on vps-i1 polls Wasabi for backup status JSON files and exposes metrics on :9220. If the JSON is stale, Prometheus fires a BackupStale alert → Alertmanager sends email.

See monitoring-exporters-operations.md for configuration.

Disaster Recovery

No dedicated DR runbook exists yet — creating one is tracked in README.

Interim priorities for a DR scenario:

  1. MongoDB rs0 — bms-2 is PRIMARY, bms-3 is SECONDARY, bms-4 is ARBITER. If PRIMARY fails, rs0 elects automatically.
  2. Supabase — managed service; failover is Supabase’s responsibility.
  3. vps-i1 (monitoring) — monitoring is non-critical for platform availability; restore from git + .env.bak.
  4. bms-1 (Pinbox24 production) — no hot standby; restore from Docker image tags on ECR + last mongodump.

Cross-references

  • README — backup-exporter alert rules
  • README — per-server disk and storage status
  • README — Wasabi S3 service details