hot_standby_feedback
hot standby가 현재 실행 중인 쿼리 정보를 primary(또는 upstream standby)에 feedback으로 보낼지 정합니다. 기본값은 off이며, postgresql.conf나 서버 커맨드라인에서만 설정할 수 있습니다. standby 서버에 설정하는 파라미터입니다.
on으로 두면 primary는 standby에서 아직 읽고 있는 row를 정리하지 않습니다. cleanup record와의 충돌로 standby 쿼리가 취소되는 문제를 없앨 수 있지만, 그 대가로 primary에 dead row가 오래 남아 워크로드에 따라 bloat가 생길 수 있습니다. feedback 메시지는 wal_receiver_status_interval보다 자주 보내지 않습니다.
cascaded replication 구성에서는 feedback이 upstream을 거쳐 결국 primary까지 전달됩니다. 중간 standby는 받은 feedback을 upstream으로 넘기는 용도 외에는 사용하지 않습니다. feedback 전송은 timestamp 기반이라 standby의 시계가 앞뒤로 이동하면 필요한 간격에 메시지가 나가지 않을 수 있고, 극단적인 경우 primary의 dead row 정리가 장시간 미뤄지는 위험이 있습니다.
운영 노트: standby에서 장시간 리포트 쿼리를 돌리는 구성이라면 켜는 편이 편하지만, primary 쪽 bloat와 xmin horizon 정체를 함께 감시해야 합니다. primary의 pg_stat_replication에서 backend_xmin을 보면 feedback이 잡아두는 지점을 확인할 수 있습니다.
출처: PostgreSQL 18 문서