Medloft

PostgreSQL-Backups, die sich auch wirklich wiederherstellen lassen

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.

Was wir machen

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.

Was es gebracht hat

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.