Amazon RDS용 PostgreSQL DB 엔진 업그레이드 - Amazon Relational Database Service

Amazon RDS용 PostgreSQL DB 엔진 업그레이드

PostgreSQL 데이터베이스에서 관리할 수 있는 업그레이드 유형은 다음과 같이 2가지입니다.

  • 운영 체제 업데이트 – 경우에 따라 보안 수정 사항이나 OS 변경 사항을 적용하기 위해 Amazon RDS에서 데이터베이스의 기본 운영 체제를 업데이트해야 할 수 있습니다. RDS 콘솔, AWS Command Line Interface(AWS CLI) 또는 RDS API를 사용하여 Amazon RDS에서 OS 업데이트를 적용하는 시기를 결정할 수 있습니다. OS 업데이트에 대한 자세한 내용은 다음단원을 참조하십시오. DB 인스턴스의 업데이트 적용

  • 데이터베이스 엔진 업그레이드 – Amazon RDS에서 새 버전의 데이터베이스 엔진이 지원되면 데이터베이스를 새 버전으로 업그레이드할 수 있습니다.

컨텍스트에 포함된 데이터베이스는 RDS for PostgreSQL DB 인스턴스 또는 다중 AZ DB 클러스터입니다.

PostgreSQL 데이터베이스의 엔진 업그레이드에는 메이저 버전 업그레이드와 마이너 버전 업그레이드라는 2가지 종류가 있습니다.

메이저 버전 업그레이드

메이저 버전 업그레이드에는 기존 애플리케이션과 호환되지 않는 데이터베이스 변경 사항이 포함될 수 있습니다. 따라서 데이터베이스의 메이저 버전 업그레이드를 수동으로 수행해야 합니다. DB 인스턴스 또는 다중 AZ DB 클러스터를 수정하여 메이저 버전 업그레이드를 시작할 수 있습니다. 메이저 버전 업그레이드를 수행하기 전에 PostgreSQL에 대한 메이저 버전 업그레이드 선택에 설명된 단계를 수행하는 것이 좋습니다.

리전 내 읽기 전용 복제본이 있는 DB 인스턴스를 업그레이드하는 경우 Amazon RDS는 기본 DB 인스턴스와 함께 복제본을 업그레이드합니다.

Amazon RDS는 다중 AZ DB 클러스터 읽기 전용 복제본은 업그레이드하지 않습니다. 다중 AZ DB 클러스터의 메이저 버전 업그레이드를 수행하면 읽기 복제본의 복제 상태가 종료로 변경됩니다. 업그레이드가 완료된 후 읽기 전용 복제본은 수동으로 삭제하고 다시 생성해야 합니다.

작은 정보

블루/그린 배포를 사용하면 메이저 버전 업그레이드에 필요한 다운타임을 최소화할 수 있습니다. 자세한 내용은 데이터베이스 업데이트에 Amazon RDS 블루/그린 배포 사용 단원을 참조하십시오.

마이너 버전 업그레이드

반대로 마이너 버전 업그레이드에는 기존 애플리케이션과 호환되는 변경 사항만 포함됩니다. 데이터베이스를 수정하여 마이너 버전 업그레이드를 수동으로 시작할 수 있습니다. 또는 데이터베이스를 생성하거나 수정할 때 마이너 버전 자동 업그레이드 옵션을 활성화할 수 있습니다. 이렇게 하면 Amazon RDS에서 새 버전을 테스트 및 승인한 후 인스턴스가 자동으로 업그레이드됩니다. PostgreSQL 데이터베이스가 읽기 복제본을 사용하는 경우 소스 인스턴스 또는 클러스터를 업그레이드하기 전에 읽기 복제본을 모두 업그레이드해야 합니다.

데이터베이스가 다중 AZ DB 인스턴스 배포이면 Amazon RDS가 기본 및 대기 인스턴스를 동시에 업그레이드합니다. 따라서 업그레이드가 완료될 때까지 데이터베이스를 사용할 수 없습니다. 데이터베이스가 다중 AZ DB 클러스터 배포이면 Amazon RDS는 리더 DB 인스턴스를 한 번에 하나씩 업그레이드합니다. 그러면 리더 DB 인스턴스가 새 라이터 DB 인스턴스로 전환됩니다. 그러면 Amazon RDS가 이전 라이터 인스턴스(현재는 리더 인스턴스)를 업그레이드합니다.

참고

다중 AZ DB 인스턴스 배포의 마이너 버전 업그레이드로 인한 다운타임은 몇 분 동안 지속될 수 있습니다. 다중 AZ DB 클러스터는 일반적으로 마이너 버전 업그레이드의 가동 중지 시간을 약 35초로 줄입니다. RDS 프록시와 함께 사용하면 다운타임을 1초 이하로 더 줄일 수 있습니다. 자세한 내용은 Amazon RDS 프록시 사용 단원을 참조하십시오. ProxySQL, PgBouncer 또는 MySQL용 AWS JDBC 드라이버와 같은 오픈 소스 데이터베이스 프록시를 사용할 수 있습니다.

자세한 내용은 PostgreSQL 마이너 버전 자동 업그레이드 단원을 참조하십시오. 마이너 버전 업그레이드를 수동으로 수행하는 방법에 대한 자세한 내용은 엔진 버전 수동 업그레이드 단원을 참조하세요.

데이터베이스 엔진 버전에 대한 자세한 내용 및 낙후된 데이터베이스 엔진 버전 정책에 대한 자세한 내용은 Amazon RDS FAQ의 데이터베이스 엔진 버전을 참조하세요.

PostgreSQL 업그레이드 개요

데이터베이스를 안전하게 업그레이드하기 위해 Amazon RDS는 PostgreSQL 설명서에 설명된 pg_upgrade 유틸리티를 사용합니다.

AWS Management Console을 사용하여 데이터베이스를 업그레이드할 때 데이터베이스의 유효한 업그레이드 대상이 표시됩니다. 또한 다음 AWS CLI 명령을 사용하여 데이터베이스의 유효한 업그레이드 대상을 식별할 수 있습니다.

대상 LinuxmacOS, 또는Unix:

aws rds describe-db-engine-versions \ --engine postgres \ --engine-version version-number \ --query "DBEngineVersions[*].ValidUpgradeTarget[*].{EngineVersion:EngineVersion}" --output text

Windows의 경우:

aws rds describe-db-engine-versions ^ --engine postgres ^ --engine-version version-number ^ --query "DBEngineVersions[*].ValidUpgradeTarget[*].{EngineVersion:EngineVersion}" --output text

예를 들어 PostgreSQL 버전 12.13 데이터베이스의 유효한 업그레이드 대상을 식별하려면 다음 AWS CLI 명령을 실행합니다.

대상 LinuxmacOS, 또는Unix:

aws rds describe-db-engine-versions \ --engine postgres \ --engine-version 12.13 \ --query "DBEngineVersions[*].ValidUpgradeTarget[*].{EngineVersion:EngineVersion}" --output text

Windows의 경우:

aws rds describe-db-engine-versions ^ --engine postgres ^ --engine-version 12.13 ^ --query "DBEngineVersions[*].ValidUpgradeTarget[*].{EngineVersion:EngineVersion}" --output text

백업 보존 기간이 0보다 큰 경우 업그레이드 프로세스 중에 Amazon RDS가 두 개의 DB 스냅샷을 생성합니다. 첫 번째 DB 스냅샷은 업그레이드 변경 이전 데이터베이스의 스냅샷입니다. 데이터베이스의 업그레이드가 완료되지 않으면 이 스냅샷을 복구하여 기존 버전을 실행하는 데이터베이스를 생성할 수 있습니다. 두 번째 DB 스냅샷은 업그레이드 완료 이후에 캡처됩니다.

참고

데이터베이스에 대한 백업 보존 기간을 0보다 큰 수로 설정하는 경우에만 Amazon RDS가 업그레이드 프로세스 중에 DB 스냅샷을 캡처합니다. DB 인스턴스의 백업 보존 기간을 수정하려면 Amazon RDS DB 인스턴스 수정 단원을 참조하세요. 다중 AZ DB 클러스터의 경우 사용자 지정 백업 보존 기간을 구성할 수 없습니다.

DB 인스턴스의 메이저 버전 업그레이드를 수행하면 리전 내 읽기 전용 복제본도 모두 자동으로 업그레이드됩니다. 업그레이드 워크플로가 시작된 후 읽기 전용 복제본은 기본 DB 인스턴스에서 pg_upgrade가 성공적으로 완료될 때까지 기다립니다. 그런 다음 프라이머리 DB 인스턴스 업그레이드는 읽기 전용 복제본 업그레이드가 완료될 때까지 기다립니다. 업그레이드가 완료될 때까지 중단이 발생합니다. 다중 AZ DB 클러스터의 메이저 버전 업그레이드를 수행하면 읽기 전용 복제본의 복제 상태가 종료로 변경됩니다.

업그레이드가 완료된 후에는 이전 버전의 DB 엔진으로 되돌릴 수 없습니다. 이때 이전 버전으로 되돌리려면 업그레이드 전에 캡처한 DB 스냅샷을 복원하여 새로운 데이터베이스를 생성해야 합니다.

PostgreSQL 버전 번호

PostgreSQL 데이터베이스 엔진의 버전 번호 매기기 순서는 다음과 같습니다.

  • PostgreSQL 버전 10 이상의 경우 엔진 버전 번호는 major.minor형식입니다. 메이저 버전 번호는 버전 번호의 정수 부분입니다. 마이너 버전 번호는 버전 번호의 소수 부분입니다.

    메이저 버전 업그레이드는 10.minor에서 11.minor로의 업그레이드와 같이 버전 번호의 정수 부분이 증가합니다.

  • PostgreSQL 버전 10 이전의 경우 엔진 버전 번호는 major.minor형식입니다. 버전 번호의 정수 부분과 첫 번째 소수 부분 모두가 메이저 엔진 버전 번호입니다. 예를 들어, 9.6이 메이저 버전입니다. 버전 번호의 세 번째 부분이 마이너 버전 번호입니다. 예를 들어, 버전 9.6.12의 경우 12가 마이너 버전 번호입니다.

    메이저 버전 업그레이드는 버전 번호의 메이저 부분이 증가합니다. 예를 들어 9.6.12에서 11.14로 업그레이드하는 것은 메이저 버전 업그레이드입니다. 여기서 9.611이 메이저 버전 번호입니다.

RDS 추가 지원 버전 번호 지정에 대한 자세한 내용은 Amazon RDS 추가 지원 버전 명명 규칙 섹션을 참조하세요.

RDS 버전 번호

RDS 버전 번호는 major.minor.patch 명명 체계를 사용합니다. RDS 패치 버전에는 릴리스 후 마이너 버전에 추가된 중요한 버그 수정이 포함되어 있습니다. RDS 추가 지원 버전 번호 지정에 대한 자세한 내용은 Amazon RDS 추가 지원 버전 명명 규칙 섹션을 참조하세요.

데이터베이스의 Amazon RDS 버전 번호를 식별하려면 먼저 다음 명령을 사용하여 rds_tools 확장을 생성해야 합니다.

CREATE EXTENSION rds_tools;

PostgreSQL 버전 15.2-R2 릴리스부터 다음 SQL 쿼리를 사용하여 RDS for PostgreSQL 데이터베이스의 RDS 버전 번호를 확인할 수 있습니다.

postgres=> SELECT rds_tools.rds_version();

예를 들어 RDS PostgreSQL 15.2 데이터베이스를 쿼리하면 다음이 반환됩니다.

rds_version ---------------- 15.2.R2 (1 row)

PostgreSQL에 대한 메이저 버전 업그레이드 선택

메이저 버전 업그레이드에는 이전 버전의 데이터베이스와 호환되지 않는 변경 사항이 포함될 수 있습니다. 새 기능을 사용하면 기존 애플리케이션이 올바르게 작동하지 않을 수 있습니다. 따라서 Amazon RDS는 자동으로 메이저 버전 업그레이드를 적용하지 않습니다. 메이저 버전 업그레이드를 수행하려면 데이터베이스를 수동으로 수정합니다. 프로덕션 데이터베이스에 업그레이드를 적용하기 전에 철저하게 테스트하여 애플리케이션이 올바르게 작동하는지 확인해야 합니다. PostgreSQL 메이저 버전 업그레이드를 수행할 때 메이저 버전 업그레이드를 수행하는 방법에 설명된 단계를 따르는 것이 좋습니다.

PostgreSQL 단일 AZ DB 인스턴스 또는 다중 AZ DB 인스턴스 배포를 다음 메이저 버전으로 업그레이드하면 데이터베이스에 연결된 읽기 전용 복제본도 다음 메이저 버전으로 업그레이드됩니다. 경우에 따라 업그레이드할 때 상위 메이저 버전으로 건너뛸 수 있습니다. 업그레이드에서 메이저 버전을 건너뛰면 읽기 전용 복제본도 해당 대상 메이저 버전으로 업그레이드됩니다. 다른 메이저 버전을 건너뛰어 버전 11로 업그레이드하면 특정 제한 사항이 있습니다. 자세한 내용은 메이저 버전 업그레이드를 수행하는 방법에 설명된 단계에서 찾을 수 있습니다.

PostgreSQL 엔진 업그레이드가 진행될 때 대부분의 PostgreSQL 확장은 업그레이드되지 않습니다. 확장은 별도로 업그레이드해야 합니다. 자세한 내용은 PostgreSQL 확장 버전 업그레이드 단원을 참조하십시오.

다음 AWS CLI 쿼리를 실행하여 RDS for PostgreSQL 데이터베이스에 사용할 수 있는 메이저 버전을 확인할 수 있습니다.

aws rds describe-db-engine-versions --engine postgres --engine-version your-version --query "DBEngineVersions[*].ValidUpgradeTarget[*].{EngineVersion:EngineVersion}" --output text

다음 표에는 사용 가능한 모든 버전에 대해 이 쿼리 결과가 요약되어 있습니다. 버전 번호의 별표(*)는 해당 버전이 더 이상 지원되지 않음을 의미합니다. 현재 버전이 더 이상 지원되지 않는 경우 최신 마이너 버전 업그레이드 대상 또는 해당 버전에 대해 사용 가능한 다른 업그레이드 대상 중 하나로 업그레이드하는 것이 좋습니다. RDS for PostgreSQL 버전 9.6 지원 중단에 대한 자세한 내용은 PostgreSQL 버전 9.6 지원 중단 섹션을 참조하세요. RDS for PostgreSQL 버전 10 지원 중단에 대한 자세한 내용은 PostgreSQL 버전 10 지원 중단 섹션을 참조하세요.

현재 소스 버전(* 더 이상 지원되지 않음) 최신 메이저 버전 업그레이드 대상 사용 가능한 기타 업그레이드 대상
16.1 16.2
15.6 16.2
15.5 16.2 16.1 15.6
15.4 16.2 16.1 15.6 15.5
15.3 16.2 16.1 15.6 15.5 15.4
15.2 16.2 16.1 15.6 15.5 15.4 15.3
14.11 16.2 15.6
14.10 16.1 15.6 15.5 14.11
14.9 15.6 15.5 15.4 14.11 14.10
14.8 15.6 15.5 15.4 15.3 14.11 14.10 14.9
14.7 15.6 15.5 15.4 15.3 15.2 14.11 14.10 14.9 14.8
14.6 15.6 15.5 15.4 15.3 15.2 14.11 14.10 14.9 14.8 14.7
14.5 15.6 15.5 15.4 15.3 15.2 14.11 14.10 14.9 14.8 14.7 14.6
14.4 15.6 15.5 15.4 15.3 15.2 14.11 14.10 14.9 14.8 14.7 14.6 14.5
14.3 15.6 15.5 15.4 15.3 15.2 14.11 14.10 14.9 14.8 14.7 14.6 14.5 14.4
14.2* 15.6 15.5 15.4 15.3 15.2 14.11 14.10 14.9 14.8 14.7 14.6 14.5 14.4 14.3
14.1* 15.6 15.5 15.4 15.3 15.2 14.11 14.10 14.9 14.8 14.7 14.6 14.5 14.4 14.3 14.2
13.14 16.2 15.6 14.11
13.13 16.1 15.5 14.11 14.10 13.14
13.12 15.4 14.11 14.10 14.9 13.14 13.13
13.11 15.3 14.11 14.10 14.9 14.8 13.14 13.13 13.12
13.10 15.2 14.11 14.10 14.9 14.8 14.7 13.14 13.13 13.12 13.11
13.9 14.11 14.10 14.9 14.8 14.7 14.6 13.14 13.13 13.12 13.11 13.10
13.8 14.11 14.10 14.9 14.8 14.7 14.6 14.5 13.14 13.13 13.12 13.11 13.10 13.9
13.7 14.11 14.10 14.9 14.8 14.7 14.6 14.5 14.4 14.3 13.14 13.13 13.11 13.10 13.9 13.8
13.6* 14.11 14.10 14.9 14.8 14.7 14.6 14.5 14.4 14.3 14.2 13.14 13.13 13.11 13.10 13.9 13.8 13.7
13.5* 14.11 14.10 14.9 14.8 14.7 14.6 14.5 14.4 14.3 14.2 14.1 13.14 13.13 13.11 13.10 13.9 13.8 13.7 13.6
13.4* 14.11 14.10 14.9 14.8 14.7 14.6 14.5 14.4 14.3 14.2 14.1 13.14 13.13 13.11 13.10 13.9 13.8 13.7 13.6 13.5
13.3* 14.11 14.10 14.9 14.8 14.7 14.6 14.5 14.4 14.3 14.2 14.1 13.14 13.13 13.11 13.10 13.9 13.8 13.7 13.6 13.5 13.4
13.2*, 13.1* 14.11 14.10 14.9 14.8 14.7 14.6 14.5 14.4 14.3 14.2 14.1 13.14 13.13 13.11 13.10 13.9 13.8 13.7 13.6 13.5 13.4
12.18 16.2 15.6 14.11 13.14
12.17 16.1 15.5 14.10 13.14 13.13 12.18
12.16 15.4 14.9 13.14 13.13 13.12 12.18 12.17
12.15 15.3 14.8 13.14 13.13 13.12 13.11 12.18 12.17 12.16
12.14 15.2 14.7 13.14 13.13 13.12 13.11 13.10 12.18 12.17 12.16 12.15
12.13 14.6 13.14 13.13 13.12 13.11 13.10 13.9 12.18 12.17 12.16 12.15 12.14
12.12 14.5 13.14 13.13 13.12 13.11 13.10 13.9 13.8 12.18 12.17 12.16 12.15 12.14 12.13
12.11 14.4 14.3 13.14 13.13 13.12 13.11 13.10 13.9 13.8 13.7 12.18 12.17 12.16 12.15 12.14 12.13 12.12
12.10* 14.2 13.14 13.13 13.12 13.11 13.10 13.9 13.8 13.7 13.6 12.18 12.17 12.16 12.15 12.14 12.13 12.12 12.11
12.9* 14.1 13.14 13.13 13.12 13.11 13.10 13.9 13.8 13.7 13.6 13.5 12.18 12.17 12.16 12.15 12.14 12.13 12.12 12.11 12.10
12.8* 13.14 13.13 13.12 13.11 13.10 13.9 13.8 13.7 13.6 13.5 13.4 12.18 12.17 12.16 12.15 12.14 12.13 12.12 12.11 12.10 12.9
12.7* 13.14 13.13 13.12 13.11 13.10 13.9 13.8 13.7 13.6 13.5 13.4 13.3 12.18 12.17 12.16 12.15 12.14 12.13 12.12 12.11 12.10 12.9 12.8
12.6*, 12.5*, 12.4*, 12.3*, 12.2* 13.14 13.13 13.12 13.11 13.7 13.6 12.18 12.17 12.16 12.15 12.14 12.13 12.12 12.11 12.10 12.9 12.8 12.7
11.22 16.1 15.5 14.10 13.13 12.17
11.21* 15.4 14.9 13.12 12.17 12.16 11.22
11.20* 15.3 14.8 13.11 12.17 12.16 12.15 11.22 11.21
11.19* 15.2 14.7 13.10 12.17 12.16 12.15 12.14 11.22 11.21 11.20
11.18* 14.6 13.9 12.17 12.16 12.15 12.14 12.13 11.22 11.21 11.20 11.19
11.17* 14.5 13.8 12.17 12.16 12.15 12.14 12.13 12.12 11.22 11.21 11.20 11.19 11.18
11.16* 14.4 14.3 13.7 12.17 12.16 12.15 12.14 12.13 12.12 12.11 11.22 11.21 11.20 11.19 11.18 11.17
11.15* 14.2 13.6 12.17 12.16 12.15 12.14 12.13 12.12 12.11 12.10 11.22 1121 11.20 11.19 11.18 11.17 11.16
11.14* 14.1 13.5 12.17 12.16 12.15 12.14 12.13 12.12 12.11 12.10 12.9 11.22 11.21 11.20 11.19 11.18 11.17 11.16 11.15
11.13* 13.4 12.17 12.16 12.15 12.14 12.13 12.12 12.11 12.10 12.9 12.8 11.22 11.21 11.20 11.19 11.18 11.17 11.16 11.15 11.14
11.12* 13.3 12.17 12.16 12.15 12.14 12.13 12.12 12.11 12.10 12.9 12.8 12.7 11.22 11.21 11.20 11.19 11.18 11.17 11.16 11.15 11.14 11.13
10.23* 14.6 13.9 12.13 11.22 11.21 11.20 11.19 11.18
10.22* 14.5 13.8 12.12 11.22 11.21 11.20 11.19 11.18 11.17 10.23
10.21* 14.4 14.3 13.7 12.11 11.22 11.21 11.20 11.19 11.18 11.17 11.16 10.23 10.22
10.20* 14.2 13.6 12.10 11.22 11.21 11.20 11.19 11.18 11.17 11.16 11.15 10.23 10.22 10.21
10.19* 14.1 13.5 12.9 11.22 11.21 11.20 11.19 11.18 11.17 11.16 11.15 11.14 10.23 10.22 10.21 10.20
10.18* 13.4 12.8 11.22 11.21 11.20 11.19 11.18 11.17 11.16 11.15 11.14 11.13 10.23 10.22 10.21 10.20 10.19
10.17* 13.3 12.7 11.22 11.21 11.20 11.19 11.18 11.17 11.16 11.15 11.14 11.13 11.12 10.23 10.22 10.21 10.20 10.19 10.18
9.6.24* 14.1 13.5 12.9 11.14 10.20 10.19
9.6.23* 13.4 12.8 11.13 10.20 10.19 10.18 9.6.24
9.6.22* 13.3 12.7 11.12 10.20 10.19 10.18 10.17 9.6.24 9.6.23
9.6.19*, 9.6.18*, 9.6.17*, 9.6.16*, 9.6.15*, 9.6.14*, 9.6.12*, 9.6.11*9.6.10*, 9.6.9*, 9.6.8*, 9.6.6*, 9.6.5*, 9.6.3*, 9.6.2*, 9.6.1* 9.6.24 14.1 13.5 12.9 11.14 10.20 10.19 9.6.23 9.6.22

메이저 버전 업그레이드를 수행하는 방법

Amazon RDS for PostgreSQL 데이터베이스에서 메이저 버전 업그레이드를 수행할 때 다음 프로세스를 따르는 것이 좋습니다.

  1. 버전 호환 가능 파라미터 그룹 준비 – 사용자 지정 파라미터 그룹을 사용하는 경우 두 가지 옵션이 있습니다. 새 DB 엔진 버전에 대한 기본 파라미터 그룹을 지정할 수 있습니다. 또는 새 DB 엔진 버전에 대한 사용자 지정 파라미터 그룹을 직접 만들 수도 있습니다. 자세한 내용은 파라미터 그룹 작업다중 AZ DB 클러스터용 DB 클러스터 파라미터 그룹 작업 단원을 참조하세요.

  2. 지원되지 않는 데이터베이스 클래스 확인 – 데이터베이스의 인스턴스 클래스가 업그레이드하려는 PostgreSQL 버전과 호환되는지 확인합니다. 자세한 내용은 DB 인스턴스 클래스에 지원되는 DB 엔진 단원을 참조하십시오.

  3. 지원되지 않는 사용 확인:

    • 준비된 트랜잭션 – 업그레이드하기 전에 열려 있는 준비된 트랜잭션을 모두 커밋하거나 롤백합니다.

      다음 쿼리를 사용하여 데이터베이스에 열려 있는 준비된 트랜잭션이 없음을 확인할 수 있습니다.

      SELECT count(*) FROM pg_catalog.pg_prepared_xacts;
    • Reg* 데이터 형식 – 업그레이드를 시도하기 전에 reg* 데이터 형식의 사용을 모두 제거하십시오. regtyperegclass 이외에는 reg* 데이터 형식을 업그레이드할 수 없습니다. pg_upgrade 유틸리티는 Amazon RDS에서 업그레이드를 수행하는 데 사용하는 이 데이터 형식을 유지할 수 없습니다.

      지원되지 않는 reg* 데이터 형식이 사용되지 않음을 확인하려면 각 데이터베이스에 다음 쿼리를 사용합니다.

      SELECT count(*) FROM pg_catalog.pg_class c, pg_catalog.pg_namespace n, pg_catalog.pg_attribute a WHERE c.oid = a.attrelid AND NOT a.attisdropped AND a.atttypid IN ('pg_catalog.regproc'::pg_catalog.regtype, 'pg_catalog.regprocedure'::pg_catalog.regtype, 'pg_catalog.regoper'::pg_catalog.regtype, 'pg_catalog.regoperator'::pg_catalog.regtype, 'pg_catalog.regconfig'::pg_catalog.regtype, 'pg_catalog.regdictionary'::pg_catalog.regtype) AND c.relnamespace = n.oid AND n.nspname NOT IN ('pg_catalog', 'information_schema');
  4. 논리적 복제 슬롯 처리 - 데이터베이스에 논리적 복제 슬롯이 있으면 업그레이드할 수 없습니다. 논리적 복제 슬롯은 일반적으로 AWS DMS 마이그레이션 및 데이터베이스에서 데이터 레이크, BI 도구 및 기타 대상으로 테이블을 복제하는 데 사용됩니다. 업그레이드하기 전에 사용 중인 논리적 복제 슬롯의 용도를 알고 삭제해도 되는지 확인합니다. 논리적 복제 슬롯이 계속 사용 중인 경우 삭제하면 안 되며 업그레이드를 진행할 수 없습니다.

    논리적 복제 슬롯이 필요하지 않은 경우 다음 SQL을 사용하여 삭제할 수 있습니다.

    SELECT * FROM pg_replication_slots; SELECT pg_drop_replication_slot(slot_name);

    pglogical 확장을 사용하는 논리적 복제 설정에서도 성공적인 메이저 버전 업그레이드를 위해서는 슬롯을 삭제해야 합니다. pglogical 확장을 사용하여 생성한 슬롯을 식별하고 삭제하는 방법에 대한 자세한 내용은 RDS for PostgreSQL용 논리적 복제 슬롯 관리 단원을 참조하십시오.

  5. 읽기 전용 복제본 처리 – 단일 AZ DB 인스턴스 또는 다중 AZ DB 인스턴스 배포 업그레이드에서는 기본 DB 인스턴스와 함께 리전 내 읽기 전용 복제본도 업그레이드됩니다. Amazon RDS는 다중 AZ DB 클러스터 읽기 전용 복제본은 업그레이드하지 않습니다.

    읽기 전용 복제본은 별도로 업그레이드할 수 없습니다. 가능하다 하더라도 기본 및 복제본 데이터베이스가 서로 다른 PostgreSQL 메이저 버전을 갖는 상황이 발생할 수 있습니다. 그런데 읽기 전용 복제본 업그레이드는 프라이머리 DB 인스턴스의 가동 중지 시간을 증가시킬 수 있습니다. 읽기 전용 복제본 업그레이드를 방지하려면 업그레이드 프로세스를 시작하기 전에 복제본을 독립형 인스턴스로 승격하거나 삭제합니다.

    업그레이드 과정에서 읽기 전용 복제본 인스턴스의 현재 파라미터 그룹을 기반으로 읽기 전용 복제본의 파라미터 그룹이 다시 생성됩니다. 읽기 전용 복제본을 수정하여 업그레이드가 완료된 후에만 사용자 지정 파라미터 그룹을 읽기 전용 복제본에 적용할 수 있습니다. 읽기 전용 복제본에 대한 자세한 내용은 Amazon RDS for PostgreSQL의 읽기 전용 복제본 작업을(를) 참조하세요.

  6. 백업 수행 – 메이저 버전 업그레이드를 하기 전에 백업을 수행하여 데이터베이스에 대해 알려진 복원 지점을 생성하는 것이 좋습니다. 백업 보존 기간이 0보다 큰 경우 업그레이드 프로세스는 업그레이드 전후에 데이터베이스의 DB 스냅샷을 생성합니다. 백업 보존 기간을 변경하려면 Amazon RDS DB 인스턴스 수정다중 AZ DB 클러스터 수정 단원을 참조하세요.

    백업을 수동으로 수행하려면 단일 AZ DB 인스턴스용 DB 스냅샷 생성다중 AZ DB 클러스터의 스냅샷 생성 단원을 참조하세요.

  7. 메이저 버전 업그레이드 전에 특정 확장 업그레이드 – 업그레이드 시 메이저 버전을 건너뛰려면 메이저 버전 업그레이드를 수행하기 전에 특정 확장을 업데이트해야 합니다. 예를 들어 버전 9.5.x 또는 9.6에서 버전 11.x로 업그레이드하면 메이저 버전을 건너뜁니다. 업데이트할 확장에는 공간 데이터 처리를 위한 PostGIS 및 관련 확장이 포함됩니다.

    • address_standardizer

    • address_standardizer_data_us

    • postgis_raster

    • postgis_tiger_geocoder

    • postgis_topology

    사용 중인 각 확장에 대해 다음 명령을 실행합니다.

    ALTER EXTENSION PostgreSQL-extension UPDATE TO 'new-version';

    자세한 내용은 PostgreSQL 확장 버전 업그레이드을 참조하세요. PostGIS 업그레이드에 대한 자세한 내용은 6단계: PostGIS 확장 업그레이드 섹션을 참조하세요.

  8. 메이저 버전 업그레이드 전에 특정 확장 삭제 – 메이저 버전을 버전 11.x로 건너뛰는 업그레이드는 pgRouting 확장 업데이트를 지원하지 않습니다. 버전 9.4.x, 9.5.x 또는 9.6.x에서 버전 11.x로 업그레이드하면 메이저 버전을 건너뜁니다. pgRouting 확장을 삭제한 다음 업그레이드 후에 호환 가능한 버전으로 다시 설치하는 것이 안전합니다. 업데이트할 수 있는 확장 버전에 대한 자세한 내용은 지원되는 PostgreSQL 확장 버전 단원을 참조하십시오.

    PostgreSQL 버전 11 이상에서는 tsearch2chkpass 확장이 더 이상 지원되지 않습니다. 버전 11.x로 업그레이드하는 경우 업그레이드 전에 tsearch2chkpass 확장을 삭제합니다.

  9. 알 수 없는 데이터 형식 삭제 – 대상 버전에 따라 unknown 데이터 형식을 삭제합니다.

    PostgreSQL 버전 10은 unknown 데이터 형식에 대한 지원이 중지되었습니다. 버전 9.6 데이터베이스가 unknown 데이터 형식을 사용하는 경우 버전 10으로 업그레이드하면 다음과 같은 오류 메시지가 표시됩니다.

    Database instance is in a state that cannot be upgraded: PreUpgrade checks failed: The instance could not be upgraded because the 'unknown' data type is used in user tables. Please remove all usages of the 'unknown' data type and try again."

    문제가 되는 열을 제거하거나 지원되는 데이터 형식으로 변경할 수 있도록 데이터베이스에서 unknown 데이터 형식을 찾으려면 다음 SQL을 사용합니다.

    SELECT DISTINCT data_type FROM information_schema.columns WHERE data_type ILIKE 'unknown';
  10. 업그레이드 모의 실습 수행 – 프로덕션 데이터베이스에서 업그레이드를 수행하기 전에 프로덕션 데이터베이스의 복제본에서 메이저 버전 업그레이드를 테스트하는 것이 좋습니다. 중복 테스트 데이터베이스의 실행 계획을 모니터링하여 실행 계획 회귀가 발생할 수 있는지 확인하고 성능을 평가할 수 있습니다. 중복 테스트 인스턴스를 만들려면 최근 스냅샷에서 데이터베이스를 복원하거나 데이터베이스의 특정 시점 복원을 수행하여 최근 복원 가능 시간으로 복원할 수 있습니다.

    자세한 내용은 스냅샷에서 복원 또는 DB 인스턴스를 지정된 시간으로 복원 섹션을 참조하세요. 다중 AZ DB 클러스터의 경우 스냅샷에서 다중 AZ DB 클러스터로 복원다중 AZ DB 클러스터를 특정 시점으로 복원 단원을 참조하세요.

    업그레이드 수행에 대한 자세한 내용은 엔진 버전 수동 업그레이드 단원을 참조하세요.

    버전 9.6 데이터베이스를 버전 10으로 업그레이드할 때 PostgreSQL 10은 기본적으로 병렬 쿼리를 활성화한다는 점에 유의하세요. 테스트 데이터베이스의 max_parallel_workers_per_gather 파라미터를 2로 변경하여 업그레이드 에 병렬 처리의 영향을 테스트할 수 있습니다.

    참고

    default.postgresql10 DB 파라미터 그룹의 max_parallel_workers_per_gather 파라미터 기본값은 2입니다.

    자세한 내용은 PostgreSQL 설명서의 Parallel Query(병렬 쿼리)를 참조하세요. 버전 10에서 병렬 처리를 사용 중지하려면 max_parallel_workers_per_gather 파라미터를 0으로 설정합니다.

    메이저 버전 업그레이드 중에 publictemplate1 데이터베이스와 각 데이터베이스에 있는 public 스키마의 이름이 일시적으로 변경됩니다. 이러한 객체는 원래 이름 뒤에 임의의 문자열이 추가된 상태로 로그에 표시됩니다. 그러면 localeowner와 같은 사용자 지정 설정이 메이저 버전 업그레이드 중에 유지되도록 문자열이 추가됩니다. 업그레이드가 완료되면 객체의 이름이 원래 이름으로 다시 변경됩니다.

    참고

    메이저 버전 업그레이드 프로세스 중에는 DB 인스턴스 또는 다중 AZ DB 클러스터의 특정 시점으로 복원을 수행할 수 없습니다. Amazon RDS에서 업그레이드가 수행된 후 데이터베이스 자동 백업이 수행됩니다. 업그레이드를 시작하기 이전의 시간 및 데이터베이스 자동 백업을 완료한 이후의 시간으로 특정 시점 복원을 수행할 수 있습니다.

  11. 사전 확인 절차 오류로 업그레이드가 실패하는 경우 문제 해결 – 메이저 버전 업그레이드 과정에서 Amazon RDS for PostgreSQL은 먼저 사전 확인 절차를 실행하여 업그레이드 실패를 일으킬 수 있는 문제를 식별합니다. 사전 확인 절차는 인스턴스의 모든 데이터베이스에서 호환되지 않는 모든 잠재적 조건을 확인합니다.

    사전 확인 시 문제가 발생하면 업그레이드 사전 확인이 실패했음을 나타내는 로그 이벤트가 생성됩니다. 사전 확인 프로세스 세부 정보는 데이터베이스의 모든 데이터베이스에 대해 pg_upgrade_precheck.log라는 업그레이드 로그에 있습니다. Amazon RDS는 파일 이름에 타임스탬프를 추가합니다. 로그 보기에 대한 자세한 내용은 Amazon RDS 로그 파일 모니터링 단원을 참조하세요.

    사전 확인 시 복제본 업그레이드가 실패하면 실패한 복제본에 대한 복제가 중단되고 복제본이 종료 상태가 됩니다. 해당 읽기 전용 복제본을 삭제하고 업그레이드된 프라이머리 DB 인스턴스를 기반으로 새 읽기 전용 복제본을 다시 생성합니다.

    사전 확인 로그에서 식별된 모든 문제점을 해결한 후 메이저 버전 업그레이드를 다시 시도하세요. 다음은 사전 확인 로그의 예제입니다.

    ------------------------------------------------------------------------ Upgrade could not be run on Wed Apr 4 18:30:52 2018 ------------------------------------------------------------------------- The instance could not be upgraded from 9.6.11 to 10.6 for the following reasons. Please take appropriate action on databases that have usage incompatible with the requested major engine version upgrade and try the upgrade again. * There are uncommitted prepared transactions. Please commit or rollback all prepared transactions.* One or more role names start with 'pg_'. Rename all role names that start with 'pg_'. * The following issues in the database 'my"million$"db' need to be corrected before upgrading:** The ["line","reg*"] data types are used in user tables. Remove all usage of these data types. ** The database name contains characters that are not supported by RDS for PostgreSQL. Rename the database. ** The database has extensions installed that are not supported on the target database version. Drop the following extensions from your database: ["tsearch2"]. * The following issues in the database 'mydb' need to be corrected before upgrading:** The database has views or materialized views that depend on 'pg_stat_activity'. Drop the views.
  12. 데이터베이스를 업그레이드하는 동안 읽기 전용 복제본 업그레이드가 실패할 경우 문제 해결 – 실패한 읽기 전용 복제본이 incompatible-restore 상태가 되고 데이터베이스에서 복제가 종료됩니다. 해당 읽기 전용 복제본을 삭제하고 업그레이드된 프라이머리 DB 인스턴스를 기반으로 새 읽기 전용 복제본을 다시 생성합니다.

    참고

    Amazon RDS는 다중 AZ DB 클러스터의 읽기 전용 복제본을 업그레이드하지 않습니다. 다중 AZ DB 클러스터의 메이저 버전 업그레이드를 수행하면, 읽기 전용 복제본의 복제 상태가 종료로 변경됩니다.

    다음과 같은 이유로 읽기 전용 복제본 업그레이드가 실패할 수 있습니다.

    • 대기 시간이 지난 후에도 프라이머리 DB 인스턴스를 따라잡지 못했습니다.

    • storage-full, incompatible-restore 등과 같이 종료 또는 호환되지 않는 수명 주기 상태에 있었습니다.

    • 프라이머리 DB 인스턴스 업그레이드가 시작되었을 때 읽기 전용 복제본에서 별도의 마이너 버전 업그레이드가 실행되었습니다.

    • 읽기 전용 복제본에서 호환되지 않는 파라미터를 사용했습니다.

    • 읽기 전용 복제본이 프라이머리 DB 인스턴스와 통신하여 데이터 폴더를 동기화하지 못했습니다.

  13. 프로덕션 데이터베이스 업그레이드 – 메이저 버전 업그레이드의 모의 실습이 성공한 경우 안심하고 프로덕션 데이터베이스를 업그레이드해도 됩니다. 자세한 내용은 엔진 버전 수동 업그레이드 단원을 참조하십시오.

  14. ANALYZE 작업을 실행하여 pg_statistic 테이블을 새로 고칩니다. 모든 PostgreSQL 데이터베이스의 각 데이터베이스에 대해 이 작업을 수행해야 합니다. 옵티마이저 통계는 메이저 버전 업그레이드 중에 전송되지 않으므로 성능 문제를 방지하려면 모든 통계를 다시 생성해야 합니다. 파라미터 없이 명령을 실행하여 다음과 같이 현재 데이터베이스의 모든 일반 테이블에 대한 통계를 생성합니다.

    ANALYZE VERBOSE;

    VERBOSE 플래그는 선택 사항이지만 이 플래그를 사용하면 진행 상황이 표시됩니다. 자세한 내용은 PostgreSQL 설명서의 ANALYZE를 참조하세요.

    참고

    성능 문제를 방지하려면 업그레이드 후 시스템에서 ANALYZE를 실행합니다.

메이저 버전 업그레이드가 완료된 후에는 다음 작업을 수행하는 것이 좋습니다.

  • PostgreSQL 업그레이드는 PostgreSQL 확장 버전을 업그레이드하지 않습니다. 확장을 업그레이드하려면 PostgreSQL 확장 버전 업그레이드 단원을 참조하십시오.

  • 필요할 경우 Amazon RDS를 사용하여 pg_upgrade 유틸리티에서 생성되는 2개의 로그를 표시합니다. 이러한 로그는 pg_upgrade_internal.logpg_upgrade_server.log입니다. Amazon RDS는 이러한 로그의 파일 이름에 타임스탬프를 추가합니다. 다른 로그와 마찬가지로 이러한 로그를 볼 수 있습니다. 자세한 내용은 Amazon RDS 로그 파일 모니터링 섹션을 참조하세요.

    업그레이드 로그를 Amazon CloudWatch Logs에 업로드할 수도 있습니다. 자세한 내용은 Amazon CloudWatch Logs에 PostgreSQL 로그 게시 섹션을 참조하세요.

  • 모든 사항이 예상대로 작동하는지 확인하려면 비슷한 워크로드로 업그레이드된 데이터베이스에서 애플리케이션을 테스트합니다. 업그레이드를 확인한 후 이 테스트 인스턴스를 삭제할 수 있습니다.

PostgreSQL 마이너 버전 자동 업그레이드

DB 인스턴스 또는 다중 AZ DB 클러스터를 생성하거나 수정할 때 마이너 버전 자동 업그레이드 옵션을 활성화하면 자동으로 데이터베이스가 업그레이드될 수 있습니다.

RDS는 각 RDS for PostgreSQL 메이저 버전마다 하나의 마이너 버전을 자동 업그레이드 버전으로 지정합니다. Amazon RDS가 마이너 버전을 테스트하고 승인하면 유지 관리 기간 중에 자동으로 마이너 버전 업그레이드가 실행됩니다. RDS는 자동으로 새로 릴리스된 마이너 버전을 자동 업그레이드 버전으로 설정하지 않습니다. RDS가 더 새로운 자동 업그레이드 버전을 지정하기 전에 다음과 같은 여러 기준이 고려됩니다.

  • 알려진 보안 문제

  • PostgreSQL 커뮤니티 버전의 버그

  • 마이너 버전 릴리스 이후 전반적인 플릿 안정성

다음 AWS CLI 명령을 사용하여 특정 AWS 리전의 지정된 PostgreSQL 마이너 버전에 대한 현재의 자동 마이너 업그레이드 대상 버전을 확인할 수 있습니다.

대상 LinuxmacOS, 또는Unix:

aws rds describe-db-engine-versions \ --engine postgres \ --engine-version minor-version \ --region region \ --query "DBEngineVersions[*].ValidUpgradeTarget[*].{AutoUpgrade:AutoUpgrade,EngineVersion:EngineVersion}" \ --output text

Windows의 경우:

aws rds describe-db-engine-versions ^ --engine postgres ^ --engine-version minor-version ^ --region region ^ --query "DBEngineVersions[*].ValidUpgradeTarget[*].{AutoUpgrade:AutoUpgrade,EngineVersion:EngineVersion}" ^ --output text

예를 들어 다음 AWS CLI 명령은 미국 동부(오하이오) AWS 리전(us-east-2)의 PostgreSQL 마이너 버전 12.13에 대한 자동 마이너 업그레이드 대상을 안내합니다.

대상 LinuxmacOS, 또는Unix:

aws rds describe-db-engine-versions \ --engine postgres \ --engine-version 12.13 \ --region us-east-2 \ --query "DBEngineVersions[*].ValidUpgradeTarget[*].{AutoUpgrade:AutoUpgrade,EngineVersion:EngineVersion}" \ --output table

Windows의 경우:

aws rds describe-db-engine-versions ^ --engine postgres ^ --engine-version 12.13 ^ --region us-east-2 ^ --query "DBEngineVersions[*].ValidUpgradeTarget[*].{AutoUpgrade:AutoUpgrade,EngineVersion:EngineVersion}" ^ --output table

다음과 같은 출력이 표시됩니다.

---------------------------------- | DescribeDBEngineVersions | +--------------+-----------------+ | AutoUpgrade | EngineVersion | +--------------+-----------------+ | True | 12.14 | | False | 12.15 | | False | 13.9 | | False | 13.10 | | False | 13.11 | | False | 14.6 | +--------------+-----------------+

이 예제에서 PostgreSQL 버전 12.14의 경우 AutoUpgrade 값은 True입니다. 따라서 자동 마이너 업그레이드 대상은 출력에서 강조 표시된 PostgreSQL 버전 12.14입니다.

PostgreSQL 데이터베이스는 다음 기준이 충족되면 유지 관리 기간 중에 자동으로 업그레이드됩니다.

  • 데이터베이스에 마이너 버전 자동 업그레이드 옵션이 활성화되어 있습니다.

  • 데이터베이스가 현재 자동 업그레이드 마이너 버전보다 낮은 DB 엔진 버전을 실행 중입니다.

자세한 내용은 마이너 엔진 버전 자동 업그레이드 단원을 참조하십시오.

참고

PostgreSQL 업그레이드는 PostgreSQL 확장을 업그레이드하지 않습니다. 확장을 업그레이드하려면 PostgreSQL 확장 버전 업그레이드 단원을 참조하십시오.

PostgreSQL 확장 버전 업그레이드

PostgreSQL 엔진 업그레이드는 PostgreSQL 확장을 업그레이드하지 않습니다. 버전 업그레이드 후 확장을 업데이트하려면 ALTER EXTENSION UPDATE 명령을 사용합니다.

참고

PostGIS 확장 프로그램 업데이트에 대한 자세한 내용은 PostGIS 확장을 사용하여 공간 데이터 관리(6단계: PostGIS 확장 업그레이드) 섹션을 참조하세요.

pg_repack 확장을 업데이트하려면 확장을 중지한 후 업그레이드된 데이터베이스에 새 버전을 생성합니다. 자세한 내용은 pg_repack 설명서의 pg_repack 설치를 참조하세요.

확장 버전을 업그레이드하려면 다음 명령을 사용하세요.

ALTER EXTENSION extension_name UPDATE TO 'new_version';

지원되는 PostgreSQL 확장 버전 목록은 지원되는 PostgreSQL 확장 버전 단원을 참조하십시오.

현재 설치된 확장을 나열하려면 다음 명령에서 PostgreSQL pg_extension 카탈로그를 사용합니다.

SELECT * FROM pg_extension;

설치에 사용할 수 있는 특정 확장 버전의 목록을 보려면 다음 명령에서 PostgreSQL pg_available_extension_versions 보기를 사용하십시오.

SELECT * FROM pg_available_extension_versions;