메뉴
Amazon Relational Database Service
사용 설명서 (API Version 2014-10-31)

PostgreSQL DB 엔진 업그레이드

Amazon Relational Database Service(Amazon RDS)에서 새 데이터베이스 엔진 버전을 지원하는 경우, DB 인스턴스를 새 버전으로 업그레이드할 수 있습니다. 메이저 버전 업그레이드와 마이너 버전 업그레이드라는 두 가지 업그레이드가 있습니다.

Amazon RDS는 PostgreSQL DB 인스턴스의 메이저 및 마이너 버전 업그레이드를 지원합니다.

메이저 버전 업그레이드에는 기존 애플리케이션과 호환되지 않는 데이터베이스 변경 사항이 포함될 수 있습니다. Amazon Relational Database Service (Amazon RDS)가 자동으로 메이저 버전 업그레이드를 적용하지 않는 이유도 여기에서 기인하며, 따라서 DB 인스턴스를 수동으로 변경해야 합니다. 인스턴스를 수정하여 메이저 버전 업그레이드를 수동으로 시작할 수 있습니다. 그러나 메이저 버전 업그레이드를 수행할 때는 권장 단계에 따라야 합니다. 자세한 내용은 메이저 버전 업그레이드 단원을 참조하십시오.

인스턴스를 수정하여 마이너 버전 업그레이드를 수동으로 시작하거나, DB 인스턴스를 만들거나 수정할 때 [Auto Minor Version Upgrade] 옵션을 선택하여 Amazon RDS에서 새 버전을 테스트한 후 승인되면 인스턴스가 자동으로 업그레이드되도록 할 수 있습니다.

AWS RDS는 PostgreSQL 확장명을 자동으로 업그레이드하지 않습니다. 확장명을 업그레이드하려면 ALTER EXTENSION UPDATE 명령을 사용해야 합니다. 예를 들어, PostgreSQL DB 엔진을 9.4.x에서 9.5.x로 업그레이드할 때 PostGIS를 업그레이드하려면 다음 명령을 실행합니다.

Copy
ALTER EXTENSION POSTGIS UPDATE TO '2.2.2'

업그레이드 개요

백업 보존 기간이 0보다 큰 경우에는 메이저 및 마이너 버전 업그레이드가 이루어지는 동안 Amazon RDS는 DB 스냅샷을 두 차례 캡처합니다. 첫 번째 DB 스냅샷은 업그레이드 변경 이전 DB 인스턴스의 스냅샷입니다. 업그레이드가 데이터베이스에 맞지 않는 경우에는 이 스냅샷을 복구하여 이전 버전의 DB 인스턴스를 생성할 수 있습니다. 두 번째 DB 스냅샷은 업그레이드 완료 이후에 캡처됩니다.

참고

DB 인스턴스에 대한 백업 보존 기간을 0보다 큰 수로 설정하면 Amazon RDS는 DB 스냅샷만 캡처합니다. 백업 보존 기간을 변경하려면 Oracle 데이터베이스 엔진 기반 DB 인스턴스의 변경 단원을 참조하십시오.

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

DB 인스턴스를 다중 AZ 배포로 생성한 경우에는 기본 복제본과 예비 복제본이 모두 업그레이드됩니다. 기본 DB 인스턴스와 예비 DB 인스턴스가 모두 동시에 업그레이드되므로 업그레이드가 끝날 때까지 작동 중단을 겪게 됩니다.

메이저 버전 업그레이드

메이저 버전 업그레이드에는 이전 버전의 데이터베이스와 호환되지 않는 데이터베이스 변경 사항이 포함될 수 있습니다. 이 기능을 사용하면 기존 애플리케이션이 올바르게 작동하지 않을 수 있습니다. Amazon RDS가 자동으로 메이저 버전 업그레이드를 적용하지 않는 이유도 여기에서 기인하므로 DB 인스턴스를 수동으로 수정하여 메이저 버전 업그레이드를 수행해야 합니다. 모든 업그레이드는 프로덕션 DB 인스턴스에 적용하기 전에 철저하게 테스트하여 애플리케이션이 올바르게 작동하는지 확인해야 합니다. 권장 모범 사례는 DB 스냅샷에서 만든 복구 인스턴스에서 메이저 버전 업그레이드를 수행하는 것입니다.

Amazon RDS가 현재 위치 업그레이드를 지원하는 경우는 다음과 같습니다.

  • PostgreSQL 9.3.x DB 인스턴스에서 PostgreSQL 9.4.x DB 인스턴스로

  • PostgreSQL 9.4.x DB 인스턴스에서 PostgreSQL 9.5.x DB 인스턴스로

  • PostgreSQL 9.5.x DB 인스턴스에서 PostgreSQL 9.6.x DB 인스턴스로

Amazon RDS는 http://www.postgresql.org/docs/9.4/static/pgupgrade.html에 있는 pg_upgrade 유틸리티를 사용하여 인스턴스를 안전하게 업그레이드합니다.

PostgreSQL 9.4 메이저 버전이 릴리스된 후 일부 9.3용 마이너 버전 업데이트가 릴리스되었으므로 9.3.9 버전에서 9.4.1 버전으로 업그레이드할 수 없고, 9.3.10 버전에서 9.4.1 또는 9.4.4 버전으로 업그레이드할 수 없습니다.

읽기 전용 복제본에서는 메이저 버전 업그레이드를 진행할 수 없습니다. 원본 인스턴스는 메이저 버전 업그레이드가 가능하지만, 모든 읽기 전용 복제본은 이전 엔진 버전에서 읽기 가능한 노드로 유지됩니다. 원본 인스턴스를 업그레이드한 뒤에는 원본 인스턴스의 변경 사항을 더 이상 읽기 전용 복제본에 복제할 수 없습니다. 인스턴스가 다른 메이저 버전으로 업그레이드된 이후에는 읽기 전용 복제본을 승격하거나, 삭제한 후 다시 만드는 것이 좋습니다.

메이저 버전 업그레이드 프로세스

Amazon RDS PostgreSQL DB 인스턴스를 업그레이드할 때는 다음 프로세스를 따르는 것이 좋습니다.

  1. 버전 호환 파라미터 그룹 준비 – 사용자 지정 파라미터 그룹을 사용 중인 경우 새 DB 엔진 버전에 대한 기본 파라미터 그룹을 지정하거나 새 DB 엔진 버전에 대한 사용자 지정 파라미터 그룹을 만들어야 합니다. 새 파라미터 그룹을 DB 인스턴스에 연결하려면 업그레이드가 완료된 후 고객이 데이터베이스 재부팅을 시작해야 합니다. 파라미터 그룹 변경 사항을 적용하기 위해 인스턴스를 재부팅해야 하는 경우, 인스턴스의 파라미터 그룹 상태가 pending-reboot로 표시됩니다. 인스턴스의 파라미터 그룹 상태는 AWS 콘솔에서 확인하거나 "describe" 호출(예: describe-db-instances)을 사용하여 확인할 수 있습니다.

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

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

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

      Copy
      SELECT count(*) FROM pg_catalog.pg_prepared_xacts;
    2. line 데이터 형식 – RDS PostgreSQL 9.3 인스턴스를 업그레이드하는 경우, PostgreSQL 9.4 이전 버전에는 line 데이터 형식이 완벽하게 구현되어 있지 않으므로 사용된 모든 line 데이터 형식을 제거한 다음 업그레이드해야 합니다.

      업그레이드할 각 데이터베이스에서 다음 쿼리를 사용하여 각 데이터베이스에 line 데이터 형식이 사용되지 않았음을 확인할 수 있습니다.

      Copy
      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 = 'pg_catalog.line'::pg_catalog.regtype AND c.relnamespace = n.oid AND n.nspname !~ '^pg_temp_' AND n.nspname !~ '^pg_toast_temp_' AND n.nspname NOT IN ('pg_catalog', 'information_schema');

      참고

      인스턴스의 모든 데이터베이스를 나열하려면 다음 쿼리를 사용합니다.

      Copy
      SELECT d.datname FROM pg_catalog.pg_database d WHERE d.datallowconn = true;
    3. Reg* 데이터 형식reg* 데이터 형식에는 pg_upgrade와 함께 지속될 수 없는 정보가 포함되어 있으므로 해당 데이터 형식을 모두 제거한 다음 업그레이드하십시오. regtyperegclass를 제외하고 reg* 데이터 형식을 업그레이드할 수 없습니다. 따라서 업그레이드하기 전에 해당하는 모든 항목을 제거하십시오.

      다음 쿼리를 사용하여 각 데이터베이스에 지원되지 않는 reg* 데이터 형식이 없음을 확인할 수 있습니다.

      Copy
      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');
  3. 인스턴스를 업그레이드하기 전에 VACUUM 작업을 수행합니다. pg_upgrade 유틸리티는 다른 메이저 버전으로 업그레이드할 때 각 데이터베이스를 vacuum합니다. VACUUM 작업을 수행하지 않은 경우 업그레이드 프로세스가 더 오래 걸려 RDS 인스턴스의 가동 중지 시간이 길어질 수 있습니다.

  4. 메이저 버전 업그레이드의 테스트 실행을 합니다. 프로덕션 데이터베이스에서 메이저 버전 업그레이드를 수행하기 전에 프로덕션 데이터베이스의 복제본에서 메이저 버전 업그레이드를 테스트하는 것이 좋습니다. 중복 테스트 인스턴스를 만들려면 최근 스냅샷에서 데이터베이스를 복원하거나 데이터베이스를 최근 복원 가능 시간으로 시점 복원할 수 있습니다. 메이저 버전 업그레이드를 완료한 후 비슷한 워크로드로 업그레이드된 데이터베이스에서 애플리케이션을 테스트하여 모든 것이 예상대로 작동하는지 확인해 보십시오. 업그레이드를 확인한 후 이 테스트 인스턴스를 삭제할 수 있습니다.

  5. 메이저 버전 업그레이드를 하기 전에 백업을 수행하여 데이터베이스에 대해 알려진 복원 지점을 생성하는 것이 좋습니다. AWS는 업그레이드 전과 후에 DB 인스턴스의 DB 스냅샷을 생성한다는 점에 주의하십시오.

  6. 프로덕션 인스턴스를 업그레이드합니다. 메이저 버전 업그레이드의 테스트 실행이 성공한 경우 확신을 가지고 프로덕션 데이터베이스를 업그레이드해도 됩니다.

Amazon RDS를 사용하여 pg_upgrade 유틸리티에서 생성되는 pg_upgrade_internal.logpg_upgrade_server.log 로그를 볼 수 있습니다. Amazon RDS에서는 이러한 로그의 파일 이름에 타임스탬프를 추가합니다. 다른 로그와 마찬가지로 이러한 로그를 볼 수 있습니다.

업그레이드 프로세스 도중 특정 시점으로 인스턴스를 시점 복원할 수 없습니다. 업그레이드 프로세스 중 RDS에서는 업그레이드를 수행한 후 인스턴스를 자동으로 백업합니다. 업그레이드를 시작하기 이전의 시간이나 인스턴스 자동 백업을 완료한 이후의 시간으로 시점 복원을 수행할 수 있습니다.

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

PostgreSQL 마이너 버전 업그레이드

Amazon RDS에서 마이너 버전 업그레이드를 테스트하고 승인한 상태에서 [Auto Minor Version Upgrade] 옵션을 선택하면 마이너 버전 업그레이드가 자동으로 수행됩니다. 그 밖의 경우에는 DB 인스턴스를 수동으로 수정하여 마이너 버전 업그레이드를 수행해야 합니다. DB 인스턴스를 생성하거나 수정할 때 [Auto Minor Version Upgrade] 옵션을 선택하면 Amazon RDS에서 새 버전을 테스트하고 승인한 후 자동으로 인스턴스가 업그레이드될 수 있습니다.

PostgreSQL DB 인스턴스가 읽기 전용 복제본을 사용하는 경우 원본 인스턴스를 업그레이드하기 전에 읽기 전용 복제본부터 모두 업그레이드해야 합니다. DB 인스턴스를 다중 AZ 배포로 생성한 경우에는 기본 복제본과 예비 복제본이 모두 업그레이드되어 업그레이드가 끝날 때까지 인스턴스를 사용할 수 없습니다.

AWS Management Console

DB 엔진의 메이저 버전 업그레이드를 DB 인스턴스에 적용하는 방법

  1. AWS Management Console에 로그인한 다음 https://console.aws.amazon.com/rds/에서 Amazon RDS 콘솔을 엽니다.

  2. 탐색 창에서 [Instances]를 선택합니다.

  3. 업그레이드하려는 DB 인스턴스의 확인란을 선택합니다.

  4. [Instance Actions]를 선택하고 [Modify]를 선택합니다.

  5. [DB Engine Version]에서 새 버전을 선택합니다.

  6. 바로 업그레이드하려면 [Apply Immediately]를 선택합니다. 다음 유지 관리 기간까지 업그레이드를 연기하려면 [Apply Immediately]를 지웁니다.

  7. [Continue]를 선택합니다.

  8. 변경 요약 정보를 확인합니다. 업그레이드를 계속 진행하려면 [Modify DB Instance]를 선택합니다. 업그레이드를 취소하려면 [Cancel] 또는 [Back]을 선택합니다.

CLI

DB 인스턴스의 엔진 버전을 업그레이드하려면 AWS CLI modify-db-instance 명령을 사용합니다. 다음 파라미터를 지정합니다.

  • --db-instance-identifier - DB 인스턴스의 이름입니다.

  • --engine-version – 업그레이드할 데이터베이스 엔진의 버전 번호입니다.

  • --allow-major-version-upgrade – 메이저 버전으로 업그레이드합니다.

  • --no-apply-immediately – 다음 유지 관리 기간에 변경 사항을 적용합니다. 변경 사항을 바로 적용하려면 --apply-immediately를 사용합니다.

Linux, OS X, Unix의 경우:

Copy
aws rds modify-db-instance \ --db-instance-identifier <mydbinstance> \ --engine-version <new_version> \ --allow-major-version-upgrade \ --apply-immediately

Windows의 경우:

Copy
aws rds modify-db-instance ^ --db-instance-identifier <mydbinstance> ^ --engine-version <new_version> ^ --allow-major-version-upgrade ^ --apply-immediately

API

DB 인스턴스의 엔진 버전을 업그레이드하려면 ModifyDBInstance 작업을 사용합니다. 다음 파라미터를 지정합니다.

  • DBInstanceIdentifier - DB 인스턴스의 이름입니다(예: mydbinstance).

  • EngineVersion – 업그레이드할 데이터베이스 엔진의 버전 번호입니다.

  • AllowMajorVersionUpgrade – 메이저 버전으로 업그레이드하려면 true로 설정합니다.

  • ApplyImmediately – 변경 사항을 즉시 적용하거나 다음 유지 관리 기간에 적용합니다. 변경 사항을 바로 적용하려면 값을 true로 설정합니다. 변경 사항을 다음 유지 관리 기간에 적용하려면 값을 false로 설정합니다.

Copy
https://rds.us-east-1.amazonaws.com/ ?Action=ModifyDBInstance &ApplyImmediately=false &DBInstanceIdentifier=mydbinstance &EngineVersion=new_version &SignatureMethod=HmacSHA256 &SignatureVersion=4 &Version=2013-09-09 &X-Amz-Algorithm=AWS4-HMAC-SHA256 &X-Amz-Credential=AKIADQKE4SARGYLE/20131016/us-east-1/rds/aws4_request &X-Amz-Date=20131016T233051Z &X-Amz-SignedHeaders=content-type;host;user-agent;x-amz-content-sha256;x-amz-date &X-Amz-Signature=087a8eb41cb1ab5f99e81575f23e73757ffc6a1e42d7d2b30b9cc0be988cff97

관련 주제