DBAtlas · Atlas de operaciones de bases de datos

Configurar un standby manualmente (standby.signal + primary_conninfo)

PostgreSQLReplicación

Comando

# 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();"

Qué hace

El archivo standby.signal hace que el servidor arranque como standby; primary_conninfo define la conexión de streaming y primary_slot_name el replication slot que se usará. En PG13+ primary_conninfo y primary_slot_name se pueden cambiar con un reload.

Cuándo usarlo

Para convertir en standby un directorio de datos preparado sin pg_basebackup -R (pgBackRest, snapshot, rsync), o para apuntar un standby existente a un primario nuevo.

Precaución

El slot debe crearse previamente en el primario (pg_create_physical_replication_slot); de lo contrario el walreceiver sigue fallando. Ponga la contraseña en ~/.pgpass en lugar de en conninfo. application_name debe coincidir exactamente con el nombre en synchronous_standby_names. Si se olvida standby.signal, el servidor arranca como primario y pasa a un timeline separado.

Abrir en DBAtlas →

Relacionado