Runbook: DB Backup & Restore
⚠️ Tenhle runbook byl do 2026-07-31 STALE. Popisoval DigitalOcean Managed DB, ruční
pg_dumpdo/root/backups/a u automatizace měl „TODO: Nastavit cron pro denní backup". Nic z toho neplatilo — zálohy jezdí přes cron proti pg-alfa a mají tři vrstvy. Aktuální stav žije v jednom dokumentu:
→ infra/backup.md
Najdeš tam:
- tři vrstvy — sentinel (Norimberk) → Storage Box (Falkenstein) → Object Storage (Helsinky)
- seznam zálohovaných databází + kontrolu, které na pg-alfa v rotaci chybí
- rozvrh cronu a proč běží v tom pořadí
- alerting —
backup-alert.sh, Telegram + mail při selhání - postupy obnovení z lokální kopie i z archivu
- co se 2026-07-31 našlo rozbité a proč se o tom nikdo nedozvěděl
Rychlé připomenutí
# obnovení z lokální kopie
gunzip -c /var/backups/postgres/<db>_<datum>.sql.gz | psql -h 100.125.3.121 -p 5432 -U s60admin -d <db>
# která DB na pg-alfa NENÍ v rotaci
# (grep MUSÍ být kotvený — volný hlásí s60_billit jako pokrytý, protože ho najde v s60_billit_hub)
ssh root@100.125.3.121 "sudo -u postgres psql -tAc \"SELECT datname FROM pg_database WHERE NOT datistemplate AND datname NOT IN ('postgres')\"" \
| while read db; do [ -n "$db" ] && { grep -q "^ $db\b" /usr/local/bin/s60-backup.sh || echo "CHYBÍ: $db"; }; done
⚠️ Obnovitelnost se zatím nikdy netestovala — viz infra/backup.md §8. Dump, který nikdo
nezkusil obnovit, není záloha, jen soubor.