Настроить standby вручную (standby.signal + primary_conninfo)
PostgreSQLРепликацияКоманда
# 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();"Что делает
Файл standby.signal заставляет сервер запуститься как standby; primary_conninfo задаёт потоковое подключение, а primary_slot_name — используемый слот репликации. В PG13+ primary_conninfo и primary_slot_name можно изменить через reload.
Когда использовать
Чтобы превратить в standby каталог данных, подготовленный без pg_basebackup -R (pgBackRest, snapshot, rsync), или перенаправить существующий standby на новый primary.
Внимание
Слот должен быть заранее создан на primary (pg_create_physical_replication_slot), иначе walreceiver будет постоянно завершаться ошибкой. Пароль храните в ~/.pgpass, а не в conninfo. application_name должен точно совпадать с именем в synchronous_standby_names. Если забыть standby.signal, сервер запустится как primary и перейдёт на отдельный timeline.