DBAtlas · 데이터베이스 운영 아틀라스

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는 streaming 연결을, primary_slot_name은 사용할 replication slot을 정의한다. PG13+에서는 primary_conninfo와 primary_slot_name을 reload로 변경할 수 있다.

사용 시점

pg_basebackup -R 없이 준비한 데이터 디렉터리(pgBackRest, 스냅샷, rsync)를 standby로 만들거나, 기존 standby가 새 primary를 바라보게 할 때.

주의

slot은 primary에 미리 생성해야 한다(pg_create_physical_replication_slot). 그렇지 않으면 walreceiver가 계속 실패한다. 비밀번호는 conninfo 대신 ~/.pgpass에 둔다. application_name은 synchronous_standby_names의 이름과 정확히 일치해야 한다. standby.signal을 잊으면 서버가 primary로 시작하여 별도 timeline으로 이동한다.

DBAtlas에서 열기 →

관련 항목