DBAtlas · Atlas d'exploitation des bases de données

Reconstruire rapidement une standby avec la restauration delta de pgBackRest

PostgreSQLSauvegarde et PITR

Commande

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;"

Ce que fait la commande

--delta compare les fichiers du PGDATA existant avec la sauvegarde (taille/horodatage et checksum) et ne copie que ceux qui diffèrent ; --type=standby écrit standby.signal et recovery-option ajoute primary_conninfo. La standby rattrape d'abord son retard depuis l'archive, puis passe en streaming.

Quand l'utiliser

Pour refaire une réplique, sans copie complète, d'une standby en retard ou dont la timeline a divergé, ou d'une ancienne primaire où pg_rewind a échoué.

Attention

Delta remplace/supprime les fichiers différents ou en trop du répertoire cible par ceux de la sauvegarde ; l'exécuter sur le mauvais serveur détruit les données de ce serveur. pgBackRest refuse de restaurer par-dessus un PostgreSQL en cours d'exécution, mais vérifiez vous-même que le service est arrêté. Gardez le mot de passe dans .pgpass plutôt que dans primary_conninfo.

Ouvrir dans DBAtlas →

Voir aussi