Configurer manuellement une standby (standby.signal + primary_conninfo)
PostgreSQLRéplicationCommande
# On the standby, with PostgreSQL stopped (PGDATA came from a backup/copy):
touch $PGDATA/standby.signal
cat >> $PGDATA/postgresql.auto.conf <<'EOF'
primary_conninfo = 'host=<primary_host> port=5432 user=replicator application_name=<standby_name>'
primary_slot_name = '<slot>'
EOF
pg_ctl -D $PGDATA start
# PG13+: change the connection on a running standby without restart (e.g. point it to a new primary):
psql -X -c "ALTER SYSTEM SET primary_conninfo = 'host=<new_primary_host> port=5432 user=replicator application_name=<standby_name>'" -c "SELECT pg_reload_conf();"Ce que fait la commande
Le fichier standby.signal fait démarrer le serveur en standby ; primary_conninfo définit la connexion de streaming et primary_slot_name le replication slot à utiliser. En PG13+, primary_conninfo et primary_slot_name peuvent être modifiés par reload.
Quand l'utiliser
Pour transformer en standby un répertoire de données préparé sans pg_basebackup -R (pgBackRest, snapshot, rsync), ou pour pointer une standby existante vers une nouvelle primaire.
Attention
Le slot doit être créé au préalable sur la primaire (pg_create_physical_replication_slot), sinon le walreceiver échoue en boucle. Mettez le mot de passe dans ~/.pgpass plutôt que dans conninfo. application_name doit correspondre exactement au nom figurant dans synchronous_standby_names. Si standby.signal est oublié, le serveur démarre en primaire et passe sur une timeline distincte.
Voir aussi
- Créer une réplique physique (pg_basebackup)
- Promouvoir une réplique en primaire
- Afficher le retard de réplication
- Créer et supprimer un replication slot
- Mettre en place une publication et une souscription de réplication logique
- Surveiller le retard de réception et de replay du WAL sur la standby (pg_stat_wal_receiver)