1.3 역사, 버전, 유지보수 현황
pg_auto_failover는 2019년 5월 v1.0.0으로 처음 공개되었습니다. 아래 표의 날짜는 git 태그를 생성한 날짜입니다. 초기에는 primary와 secondary가 하나씩인 2노드 group만 관리했습니다. 이후 standby 개수 제한을 없애고 Citus 지원을 추가했습니다. 이 장에서는 버전별 변화와 2026-09 시점의 유지보수 현황을 정리합니다. 운영 버전을 선택할 때 알아야 할 사실은 두 가지입니다. 최신 릴리스는 v2.2입니다. 이후 main 브랜치에 중요한 수정이 쌓였지만 아직 릴리스되지 않았습니다.
릴리스 연혁
| 버전 | 태그 날짜 | 주요 변화 (CHANGELOG 기준) |
|---|---|---|
| v1.0.0 | 2019-05-03 | 첫 릴리스. primary와 secondary 2노드 |
| v1.2 | 2020-03-16 | --skip-pg-hba, SSL 연결과 self-signed 인증서 지원, --auth 필수화 |
| v1.3 | 2020-05-04 | pg_autoctl enable/disable ssl, replication slot 처리 개선 |
| v1.4.0 | 2020-09-23 | standby 개수 제한 해제, number_sync_standbys, replication quorum, candidate priority. keeper가 PostgreSQL을 자식 프로세스로 실행 |
| v1.5.1 | 2021-03-25 | monitor online 교체(enable/disable monitor), synchronous_standby_names wildcard 사용 중단 |
| v1.6.1 | 2021-07-08 | dropped 상태, pg_rewind 전 crash recovery, 선출에 timeline 반영 |
| v2.0 | 2022-10-07 | Citus formation 지원. 기본 브랜치 이름을 master에서 main으로 변경 |
| v2.1 | 2023-11-24 | PostgreSQL 16 지원 |
| v2.2 | 2025-04-03 | PostgreSQL 17 지원. PostgreSQL 11, 12와 32bit 아키텍처 지원 중단 |
v1.5.1에서 wildcard 사용을 중단한 것은 v2.2 문서와 실제 동작이 어긋나는 원인이기도 합니다. 문서는 number_sync_standbys = 0일 때 synchronous_standby_names = '*'를 쓴다고 설명합니다. 이 노트의 실습에서는 'ANY 1 (pgautofailover_standby_2)'처럼 standby 이름을 명시한 값이 나왔습니다(5.1).
지원 PostgreSQL 버전
v2.2 README와 설치 문서는 PostgreSQL 13~17과의 호환을 명시합니다. 실습 이미지의 pg_autoctl --version 출력도 같았습니다.
pg_autoctl version 2.2-4.pgdg13+1
pg_autoctl extension version 2.2
compiled with PostgreSQL 18.4 (Debian 18.4-1.pgdg13+1) on aarch64-unknown-linux-gnu, compiled by gcc (Debian 14.2.0-19) 14.2.0, 64-bit
compatible with Postgres 13, 14, 15, 16 and 17
PGDG apt 저장소(Debian 13 trixie)는 2026-09 현재 postgresql-18-auto-failover 패키지도 2.2-4 버전으로 제공합니다. 패키지는 제공되지만 v2.2 릴리스는 PostgreSQL 18 호환을 선언하지 않았습니다. 이 노트는 PostgreSQL 17로 실습했으며 18 조합은 검증하지 않았습니다.
main 브랜치의 미릴리스 변화
v2.2 태그 이후 main에는 61개 커밋이 있습니다(2026-09-28 clone 기준). 대부분 2026-07 이후에 추가되었고 9월에도 커밋이 이어지고 있습니다. 운영자가 알아야 할 변화는 다음과 같습니다.
- PostgreSQL 17, 18, 19 빌드와 CI 지원(#1144). main README는 "Postgres 13 to 18"을 명시
- monitor extension 버전 2.3,
ltree의존 추가 - 3개 데이터센터 구성에서 split brain 방지. 복제가 멈추면 monitor가
wait_primary를 지정하는pgautofailover.replication_stall_timeout(#1149) - 모든 quorum 노드가 LSN을 보고하기 전에는 승격을 거부하는
pgautofailover.guard_data_loss, 그리고perform failover --allow-data-loss(#1142) - 스스로 fencing한 primary가 도달할 수 없는 목표 상태에서 멈추는 문제 수정(#1158), switchover 실패 후 timeline 분기 감지(#1161),
show timeline과accept timeline명령 - monitor 비밀번호 로그 노출 제거(#1174),
show state --local읽기 전용화(#1175)
이 수정들은 v2.2 사용자가 겪을 수 있는 결함이 있었다는 뜻이기도 합니다. 10.1에서 운영에 미치는 영향을 정리합니다.
readthedocs의 main 문서는 위 변화를 반영하여 크게 개정되었습니다. 예를 들어 guard_data_loss 설정과 pg_autoctl show timeline 페이지는 v2.2 바이너리에 없습니다. v2.2를 운영한다면 GitHub의 v2.2 태그 문서를 기준으로 확인해야 합니다.
유지보수 현황
- 2023-11 v2.1 이후 2025-01까지 커밋 공백. 2024년 커밋 0건
- 2025년 18건(v2.2 포함), 2026년 9월 28일까지 53건
- 최근 12개월(2025-09-28 이후) 신규 이슈 24건, 머지된 PR 54건
- 열린 이슈 89건, 열린 PR 21건
- v2.2 이후 커밋 61건 중 54건을 한 명의 메인테이너(Dimitri Fontaine, 디미트리 퐁텐)가 작성
프로젝트는 운영되고 있지만 유지보수가 한두 사람에게 집중되어 있습니다. 릴리스 간격도 v2.1에서 v2.2까지 16개월이었습니다. 새로 도입한다면 main의 수정이 언제 릴리스되는지 확인해야 합니다. PGDG 패키지가 언제 갱신되는지도 확인 대상에 포함해야 합니다.
연도별 커밋 수는 git log --format=%ad --date=format:%Y로 집계한 author date 기준 값입니다. 커밋 크기는 반영하지 않습니다. 2026년은 9월 28일까지입니다.
정리
v2.2는 PostgreSQL 13~17을 지원하는 현재 안정 릴리스입니다. main에는 split brain과 데이터 손실 방지에 관한 중요한 수정이 쌓였지만 릴리스되지 않았습니다. 이 노트는 v2.2 동작을 기준으로 작성합니다. main에서 달라지는 부분은 따로 표시합니다.