DBAtlas · Atlas für Datenbankbetrieb

Standby mit pgBackRest-Delta-Restore schnell neu aufbauen

PostgreSQLBackup & PITR

Befehl

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.

In DBAtlas öffnen →

Verwandte Einträge