Réparer un standby décroché

Réparer un standby décroché#

Re-bootstrap depuis le primaire courant (IP directe pour le basebackup) :

# exemple sur pg-03, primaire = pg-02
pcs node standby pg-03
sudo -u postgres /usr/pgsql-18/bin/pg_ctl -D /var/lib/pgsql/18/data stop -m immediate 2>/dev/null
sudo -u postgres mv /var/lib/pgsql/18/data /var/lib/pgsql/18/data.old
sudo -u postgres mkdir -m 700 /var/lib/pgsql/18/data
sudo -u postgres /usr/pgsql-18/bin/pg_basebackup \
    -h 192.168.14.162 -U replicator \
    -D /var/lib/pgsql/18/data \
    -R -X stream -c fast -P

# corriger application_name + VIP
sudo -u postgres bash -c '
cd /var/lib/pgsql/18/data
sed -i "/^primary_conninfo/d" postgresql.auto.conf
cat >> postgresql.auto.conf <<EOF
primary_conninfo = '\''host=192.168.14.160 application_name=pg-03 user=replicator password=motdepasse'\''
EOF
'

pcs node unstandby pg-03
pcs resource cleanup pgsqld
# vérifier data.old puis supprimer :
# sudo -u postgres rm -rf /var/lib/pgsql/18/data.old

Astuce

Le re-basebackup n’utilise que l’autorisation replication déjà en place. pg_rewind exigerait une ligne pg_hba host <base> replicator … supplémentaire (pseudo-base replication ≠ connexion base normale) — inutile sur un cluster neuf.