명령어/DB

[PostgreSQL] pg_isready 접속 가능 여부 점검

jykim23 2026. 7. 30. 22:16
반응형

설치·접속: PostgreSQL 설치와 접속

부제: 서버가 접속을 받을 준비가 됐는지 종료 코드로 알려준다

pg_isready                    # 로컬 서버 상태 확인
pg_isready -d shop            # 특정 DB 지정
pg_isready -h db.internal -p 5432   # 원격 호스트·포트 지정
/var/run/postgresql:5432 - accepting connections

pg_isready는 서버가 클라이언트 접속을 받을 수 있는 상태인지 딱 그것만 확인하는 가벼운 도구다. 실제로 쿼리를 날리지 않고 연결 가능 여부만 보기 때문에 빠르고, 로그인 실패나 DB 부재 같은 상황도 "서버는 살아있음"으로 구분해 판단한다. 진짜 쓸모는 사람이 읽는 메시지가 아니라 종료 코드(exit code)에 있다. 0이면 정상, 3이면 응답 없음이라 헬스체크·대기 스크립트·Docker의 healthcheck에 그대로 얹기 좋다. 위 출력의 /var/run/postgresql:5432는 유닉스 소켓 경로로 붙었다는 뜻이다.

이렇게도 쓴다

종료 코드로 상태를 분기 처리한다. (스크립트 조합)

pg_isready -q && echo "DB OK" || echo "DB DOWN"

 

서버가 올라올 때까지 기다렸다 다음 단계로 넘어간다. (기동 대기 루프)

until pg_isready -q; do sleep 1; done; echo "ready"

 

원격 DB의 접속 가능 여부를 점검한다. (호스트·포트·유저)

pg_isready -h db.internal -p 5432 -U appuser

 

Docker Compose 헬스체크에 넣는다.

healthcheck:
  test: ["CMD-SHELL", "pg_isready -U postgres"]
  interval: 5s

 

응답 없으면 알림을 쏘는 cron 감시를 건다. (조합)

* * * * * pg_isready -q || curl -s https://hooks.example.com/db-down

 

준비되면 곧바로 마이그레이션을 실행한다. (배포 조합)

until pg_isready -q; do sleep 2; done && alembic upgrade head
반응형