Standby mit pgBackRest-Delta-Restore schnell neu aufbauen
PostgreSQLBackup & PITRBefehl
sudo systemctl stop postgresql-16
# Keeps the existing PGDATA and fetches only differing files; writes standby.signal:
sudo -u postgres pgbackrest --stanza=<stanza> --delta --type=standby "--recovery-option=primary_conninfo=host=<primary_host> port=5432 user=replicator application_name=<standby_name>" restore
sudo systemctl start postgresql-16
psql -X -c "SELECT status, sender_host FROM pg_stat_wal_receiver;"Was es tut
--delta vergleicht die Dateien im vorhandenen PGDATA mit dem Backup (Größe/Zeitstempel und Prüfsumme) und kopiert nur abweichende; --type=standby schreibt standby.signal, und recovery-option ergänzt primary_conninfo. Der Standby holt zuerst aus dem Archiv auf und wechselt dann zu Streaming.
Wann einsetzen
Um einen zurückliegenden oder auf der Timeline abgewichenen Standby oder eine alte Primary, bei der pg_rewind fehlschlug, ohne vollständige Kopie wieder zur Replica zu machen.
Vorsicht
Delta ersetzt/entfernt abweichende oder überzählige Dateien im Zielverzeichnis durch die des Backups; auf dem falschen Server ausgeführt, zerstört es dessen Daten. pgBackRest verweigert einen Restore über ein laufendes PostgreSQL, prüfe aber selbst, dass der Dienst gestoppt ist. Lege das Passwort in .pgpass statt in primary_conninfo ab.
Verwandte Einträge
- WAL-Archivierung für pgBackRest konfigurieren (archive-push/archive-get)
- pgBackRest-Stanza anlegen und Archivierung prüfen (stanza-create/check)
- Voll-, differenzielle und inkrementelle Backups mit pgBackRest erstellen
- pgBackRest-Backup-Katalog und WAL-Archivbereich anzeigen (info)
- Letztes Backup mit pgBackRest wiederherstellen
- Mit pgBackRest auf einen Zeitpunkt wiederherstellen (PITR, --type=time)