Christian Kruse: Postgres Restore

Beitrag lesen

Hallo hmm,

ich habe über einen archive_command backupdateien von meiner Datenbank angelegt.

Nein, das hast du nicht. Dokumentation lesen! archive_command kopiert den WAL, das ist kein Backup. Es kann im Rahmen einer Backup-Strategie genutzt werden, etwa für eine Point-in-Time-Recovery.

Wisst ihr wie man Backupdaten in der Postgres Restort?

Backups stellt man mit pg_restore wieder her, das ist soweit richtig. Aber WAL archiving ist kein Backup. Du benötigst ein base backup, von dessen Punkt aus du wieder ansetzen kannst. Im wesentlichen läuft das so: du stellst das base backup wieder her und entfernst alle Dateien im Verzeichnis pg_xlog im Data-Verzeichnis. Wenn du in deinem Base-Backup noch WAL-Dateien hast, die noch nicht archiviert wurden, kopierst du sie nach pg_xlog. Dann startest du die Datenbank im recovery mode; der DB-Server wird sich die WAL-Daten aus dem Archiv-Verzeichnis holen, das du konfiguriert hast. Wenn du zu einem bestimmten Zeitpunkt zurück möchtest, musst du vorher noch einen Endpunkt für das WAL-Recovery angeben.

Wenn das erfolgreich verlaufen ist, kannst du die Datenbank wieder im normalen Modus starten.

Das ist sehr verkürzt, die PostgreSQL-Doku hat da deutlich bessere Dokumentation, etwa das Artikel über Continuous Archiving. Generell würde ich dir aber auch empfehlen, sowas wie pgbarman zu nutzen.

LG,
CK