Back to blog

PostgreSQL Buildfarm의 pg_upgrade 버전 간 호환성 검증 방법

August 09, 2026
Andrew Dunstan

December 12, 2025

 

PostgreSQL을 운영하다 보면 한 가지 궁금증이 생길 수 있습니다. PostgreSQL 커뮤니티는 9.5에서 18처럼 서로 다른 버전 간의 업그레이드를 어떻게 테스트할까요?

자세히 알려지지 않은 이 과정에 대해 EDB의 Andrew DunstanPostgreSQL Buildfarm의 내부 동작 방식을 설명합니다. 이전 PostgreSQL 버전에서 최신 버전으로의 업그레이드 호환성을 지속적으로 검증하는 자동화된 테스트 과정을 살펴봅니다.
 

PostgreSQL Buildfarm의 핵심: TestUpgradeXversion

PostgreSQL의 품질을 검증하는 Buildfarm 클라이언트의 기본 스크립트는 run_build.pl입니다. 이 스크립트는 단일 브랜치(예: REL_17_STABLE)를 빌드하고 테스트합니다. 일반적으로 빌드가 끝나면 빌드 산출물은 삭제됩니다.

하지만 TestUpgradeXversion이라는 특수 모듈을 활성화하면 과정이 달라집니다. 이 모듈은 표준 설치 검사(installcheck)가 끝난 후 다음과 같은 작업을 수행합니다.


1. 빌드 산출물 저장 및 스냅샷 생성

테스트가 끝난 현재 버전의 바이너리(bin, lib, include, share)와 데이터 디렉터리를 저장합니다. 이때 저장된 인스턴스가 현재의 빌드 경로나 설치 경로에 의존하지 않도록 라이브러리 경로 등을 조정합니다. 이렇게 저장된 데이터는 이후 업그레이드 테스트에서 이전 버전의 데이터로 활용됩니다.


2. 업그레이드할 이전 버전 선택

모듈은 저장된 버전 목록을 확인합니다. 현재 빌드 중인 버전이 ‘Release 15’라면 저장된 버전 가운데 15와 같거나 그보다 오래된 버전을 테스트 대상으로 선택합니다. 즉, 테스트할 때마다 이전 버전을 새로 빌드하는 것이 아니라 과거에 빌드하여 저장해 둔 산출물을 재사용합니다.

  • 참고: 이 방식 덕분에 소스 코드 컴파일이 까다로운 오래된 버전(예: 9.2)도 매번 다시 빌드하지 않고 업그레이드 테스트에 활용할 수 있습니다.


버전 간 업그레이드 검증 프로세스

선택된 이전 버전의 데이터를 현재 테스트 중인 버전으로 업그레이드하는 과정은 다음과 같이 진행됩니다.

  1. 환경 조정: 이전 버전의 데이터 디렉터리 복사본을 생성하고, 업그레이드를 수행할 수 있도록 관련 설정을 조정합니다.
  2. 버전 간 차이 조정 (AdjustUpgrade.pm): 이전 버전과 대상 버전 사이에 차이가 있는 경우, PostgreSQL 소스 코드의 Perl 모듈을 통해 필요한 조정 작업을 수행합니다. 이 로직은 PostgreSQL 커미터들이 관리하므로 Buildfarm 클라이언트를 별도로 수정할 필요가 없습니다.
  3. 데이터 덤프 및 클러스터 생성: 이전 버전에서 pg_dumpall을 실행한 뒤 인스턴스를 중지합니다. 이후 새 버전의 클러스터를 생성합니다.
  4. pg_upgrade 실행: 이전 버전의 클러스터를 새 버전으로 업그레이드합니다.
  5. 사후 검증:
    • 해시 인덱스(Hash Index) 재구성이 필요한 경우 이를 수행합니다.
    • pg_amcheck를 통해 데이터 무결성을 검사합니다.
    • 모든 확장(Extension) 기능이 정상적으로 업데이트되는지 확인합니다.
  6. 덤프 결과 비교: 업그레이드된 새 클러스터에서 다시 덤프를 생성합니다. 이후 이전 버전에서 생성한 덤프와 비교하여 결과가 바이트 단위로 일치하는지 확인합니다.


왜 모든 Buildfarm에서 이 테스트를 실행하지 않을까?

이러한 테스트를 모든 Buildfarm에서 기본적으로 실행하지 않는 이유는 리소스 비용 때문입니다.

  • 시간: 빠른 환경에서는 20분 정도 소요되지만, 느린 환경에서는 1시간 이상 걸릴 수 있습니다.
  • 디스크 공간: 이 모듈을 지원하기 위해 Buildfarm 멤버인 ‘crake’의 경우 약 17GB의 여유 공간이 필요하며, 테스트를 처리하는 동안에는 추가 공간도 사용됩니다.


PostgreSQL 업그레이드의 신뢰성을 뒷받침하는 검증

PostgreSQL이 오랜 기간 안정적으로 발전할 수 있었던 배경에는 이처럼 지속적인 검증 과정이 있습니다. 이전 버전에서 최신 버전까지 다양한 업그레이드 경로를 반복적으로 테스트함으로써, pg_upgrade의 버전 간 호환성과 업그레이드 신뢰성을 지속적으로 확인하고 있습니다.

다음 단계: PostgreSQL 버전 업그레이드나 마이그레이션 전략을 수립하고 있다면 EDB의 도구와 전문가 지원을 통해 현재 환경에 적합한 업그레이드 방안을 검토해 보세요.

 

 

메일: salesinquiry@enterprisedb.com

 

Share this