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

quorum(ANY) 또는 priority(FIRST) 방식 동기 복제 구성

PostgreSQL복제

명령어

-- Quorum: commit completes once any 1 standby in the list confirms
ALTER SYSTEM SET synchronous_standby_names = 'ANY 1 (stby_a, stby_b)';
-- Priority based: the first connected standby in the list is sync, the others 'potential'
-- ALTER SYSTEM SET synchronous_standby_names = 'FIRST 1 (stby_a, stby_b)';
SELECT pg_reload_conf();
SELECT application_name, state, sync_state, sync_priority FROM pg_stat_replication ORDER BY application_name;

하는 일

커밋이 완료되기 전에 어느 standby가 확인해야 하는지 정의한다. ANY N은 quorum 기반이며(sync_state = quorum), FIRST N은 목록 순서상 먼저 연결된 N개 standby를 동기(sync)로, 나머지를 대기 standby(potential)로 만든다. 확인 수준은 synchronous_commit(remote_write, on, remote_apply)으로 설정한다.

사용 시점

페일오버 시 데이터 손실이 없어야 하는 시스템(RPO = 0)에서. standby가 여러 개면 standby 하나의 장애로 쓰기가 멈추지 않도록 ANY가 권장된다.

주의

필요한 수의 동기 standby가 연결되어 있지 않으면 커밋이 오류 없이 멈추고 애플리케이션이 정지한다. 목록의 이름은 standby의 application_name과 일치해야 한다. 긴급 시 단일 세션은 SET synchronous_commit = local로 우회할 수 있다. Patroni 환경에서는 수동 설정 대신 synchronous_mode로 관리한다.

DBAtlas에서 열기 →

관련 항목