Configurar um standby manualmente (standby.signal + primary_conninfo)
PostgreSQLReplicaçãoComando
# 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();"O que faz
O arquivo standby.signal faz o servidor iniciar como standby; primary_conninfo define a conexão de streaming e primary_slot_name o replication slot a usar. No PG13+ primary_conninfo e primary_slot_name podem ser alterados com reload.
Quando usar
Para transformar em standby um diretório de dados preparado sem pg_basebackup -R (pgBackRest, snapshot, rsync) ou para apontar um standby existente para um novo primário.
Atenção
O slot deve ser criado antes no primário (pg_create_physical_replication_slot), senão o walreceiver continua falhando. Coloque a senha no ~/.pgpass em vez de no conninfo. application_name deve coincidir exatamente com o nome em synchronous_standby_names. Se o standby.signal for esquecido, o servidor inicia como primário e passa para uma timeline separada.