Standby manuell konfigurieren (standby.signal + primary_conninfo)
PostgreSQLReplikationBefehl
# 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();"Was es tut
Die Datei standby.signal lässt den Server als Standby starten; primary_conninfo definiert die Streaming-Verbindung und primary_slot_name den zu nutzenden Replication Slot. Ab PG13 lassen sich primary_conninfo und primary_slot_name per Reload ändern.
Wann einsetzen
Um ein ohne pg_basebackup -R vorbereitetes Datenverzeichnis (pgBackRest, Snapshot, rsync) zum Standby zu machen oder einen bestehenden Standby auf eine neue Primary zu richten.
Vorsicht
Der Slot muss vorher auf der Primary angelegt werden (pg_create_physical_replication_slot), sonst schlägt der walreceiver ständig fehl. Lege das Passwort in ~/.pgpass statt in conninfo ab. application_name muss exakt dem Namen in synchronous_standby_names entsprechen. Wird standby.signal vergessen, startet der Server als Primary und wechselt auf eine eigene Timeline.
Verwandte Einträge
- Physische Replica aufbauen (pg_basebackup)
- Replica zur Primary hochstufen (Promote)
- Replikationsverzögerung anzeigen
- Replication Slot anlegen und löschen
- Publication und Subscription für logische Replikation einrichten
- WAL-Empfangs- und Replay-Verzögerung auf dem Standby überwachen (pg_stat_wal_receiver)