Das häufigste Problem mit Backups ist nicht, dass es keine gibt – sondern dass niemand je versucht hat, sie wiederherzustellen. Die Datei ist da, die Größe sieht plausibel aus, und erst im Ernstfall stellt sich heraus, dass der Dump abgeschnitten ist oder ein Schema fehlt.
Jede Nacht erstellen wir einen logischen Dump und spielen ihn sofort in eine temporäre Datenbank auf einem separaten Server ein:
pg_dump -Fc -d app > app.dump createdb restore_check pg_restore -d restore_check app.dump psql -d restore_check -c "select count(*) from orders"
Schlägt die Wiederherstellung fehl oder weicht die Zeilenanzahl in den wichtigsten Tabellen deutlich von der Produktivdatenbank ab, gibt es einen Alarm. Die temporäre Datenbank wird nach der Prüfung gelöscht.
In einem halben Jahr hat der Test zweimal ein Problem entdeckt, bevor es zum Ausfall wurde: einmal war der Backup-Datenträger voll, ein anderes Mal wurde der Dump von der falschen Replik gezogen.