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

Reconstruire une réplique défaillante avec Patroni (reinit)

PostgreSQLPatroni

Commande

# Wipe the replica's PGDATA and rebuild it (create_replica_methods: pgbackrest/basebackup):
patronictl -c /etc/patroni/patroni.yml reinit <cluster> <member> --wait --force
# Take the basebackup directly from the leader instead of the backup repository:
patronictl -c /etc/patroni/patroni.yml reinit <cluster> <member> --from-leader --wait --force

Ce que fait la commande

Supprime le répertoire de données de la réplique indiquée et la reconstruit de zéro selon les create_replica_methods de Patroni (restauration pgBackRest ou pg_basebackup).

Quand l'utiliser

Lorsqu'une réplique ne peut pas rejoindre la réplication à cause d'une incohérence de timeline, d'un échec de pg_rewind, de WAL manquant ou d'une corruption de données.

Attention

Toutes les données locales du membre sont supprimées ; vérifiez bien que la commande cible le bon membre (Patroni refuse reinit sur le leader). Sur les grosses bases, cela peut prendre des heures et ajoute une charge d'E/S/réseau sur le leader ; le cluster fonctionne pendant ce temps avec une réplique en moins. --from-leader n'existe que dans les versions récentes de Patroni 4.x (vérifiez avec patronictl reinit --help) ; il ignore create_replica_methods et effectue un pg_basebackup depuis le leader.

Ouvrir dans DBAtlas →

Voir aussi