공식 기술 문서 기반 · 교육용 진단 · PostgreSQL 18

공식 문서를 토대로 만든 개념도. 실제 기기·DB 측정 화면이 아닙니다.

PostgreSQL 18: 오류는 해결했는데 복제 구독이 멈춰 있다면?

오류 메시지의 직접 원인을 수정했다고 해서 논리 복제 구독이 항상 자동으로 다시 활성화되는 것은 아닙니다. 다만 먼저 전제가 있어요. PostgreSQL 18의 disable_on_error는 기본값이 false입니다. 따라서 모든 복제 오류가 구독을 자동으로 끄는 것은 아닙니다.

이 글은 공식 문서에 근거한 진단 방법입니다. 실제 운영 DB에 접속해 장애를 재현하거나 고객 데이터를 확인했다는 주장이 아닙니다.

구독이 자동 비활성화되는 조건

PostgreSQL의 공식 CREATE SUBSCRIPTION 설명은 **disable_on_error = true**로 설정한 경우 구독 워커가 복제 오류를 감지하면 구독을 자동으로 비활성화할 수 있다고 안내합니다. 그 상태에서는 원래 데이터 오류가 수정되어도 구독 활성 여부를 별도로 확인해야 합니다.

여기에는 두 가지 다른 상태가 존재합니다.

  1. 원래 복제 오류가 해결되었는가? — 원본 데이터, 스키마, 권한, 적용 오류의 원인을 확인하는 문제.
  2. 구독이 활성화되어 있는가? — 구독의 subenabled 상태를 확인하는 문제.

두 조건이 동시에 참이어야 정상 재개 가능성을 검토할 수 있습니다. 이 초안에서는 실제 복제 지연량이나 복구 성공률을 측정하지 않았습니다.

상태를 변경하지 않는 읽기 전용 SQL

PostgreSQL 18 공식 시스템 카탈로그에는 pg_subscription.subenabled(구독 활성화 여부), pg_subscription.subdisableonerr(오류 시 자동 비활성화 설정)가 있습니다.

-- READ ONLY; replace the subscription name after confirming the actual environment.
-- Access privileges may restrict querying the catalog.
SELECT subname, subenabled, subdisableonerr
FROM pg_catalog.pg_subscription
WHERE subname = 'example_sub';

현재 복제 워커의 상태가 필요한 경우에는 관측 가능한 통계 뷰도 별도로 확인합니다.

-- READ ONLY; this does not restart or alter replication.
SELECT subname, pid, received_lsn, latest_end_lsn, latest_end_time
FROM pg_catalog.pg_stat_subscription
WHERE subname = 'example_sub';

결과를 만들어 넣지 않았습니다. 위 쿼리는 해당 버전의 공식 문서를 바탕으로 한 진단 예제이며, 이 초안을 만드는 과정에서 실제 PostgreSQL 18 인스턴스에 실행하지 않았습니다. 통계 뷰에 활동 행이 없거나 PID가 비어 보이는 경우에도 그 이유를 오류 하나로 단정하지 말고 서버 로그·구독 설정·권한을 함께 대조해야 합니다.

또한 pg_subscription.subconninfo에 연결 문자열과 비밀번호가 들어갈 수 있으므로 전체 행 덤프나 스크린샷을 공개해서는 안 됩니다. 필요한 컬럼만 선택해 확인하세요.

언제 재활성화를 고려할까?

ALTER SUBSCRIPTION ... ENABLE은 구독을 활성화하는 실제 쓰기 작업입니다. 이 문서에서는 실행하지 않으며, 예제 명령을 무심코 복사해 운영 환경에 붙여 넣지 않도록 구체적인 실행문도 제공하지 않습니다. 실제 장애 환경에서는 원인 제거 확인, 데이터 정합성·지연 검토, 복구 절차와 승인·롤백 기준을 먼저 정해야 합니다.

진단 흐름: 버전 확인 → disable_on_error 설정 확인 → subenabled 확인 → 복제 워커 로그 및 통계 검토 → 재활성화 영향 평가 → 별도 승인된 복구 조치.

공식 출처: CREATE SUBSCRIPTION, pg_subscription, ALTER SUBSCRIPTION

이 글의 가상 화면·단계는 실제 제조 설비·고객 데이터베이스에서 시험한 결과가 아닙니다. 운영 설정 변경은 별도 승인과 검증이 필요합니다.