새 주 버전으로 업그레이드
2025년 12월 기준으로, 세 가지 다른 업그레이드 Databases for PostgreSQL 경로를 제공합니다:
- 새 메이저 버전으로의 인플레이스 업그레이드.
- 백업에서 복원 중입니다.
- 읽기 전용 복제본에서 업그레이드하기.
데이터베이스의 주요 버전이 지원 종료(EOL) 시점이 가까워지면, 최신 주요 버전으로 업그레이드하는 것이 좋습니다.
Cloud Databases CLI 플러그인 명령 ibmcloud cdb deployables-show또는 Cloud Databases API /deployables 엔드포인트에서 IBM Cloud 카탈로그 페이지의 사용 가능한 Databases for PostgreSQL 버전을 찾으십시오.
새 인스턴스로 업그레이드할 때 애플리케이션의 연결 정보도 변경해야 합니다.
다음 예시 명령어에서, 데이터베이스 인스턴스의 전체 CRN(고유 식별자)이 {id} 에 필요합니다. CRN에 특수 문자가 포함되어 있으므로, "not_found" 오류가 발생하지 않도록 URL 인코딩을 적용해야 합니다.
PostgreSQL 의 최신 주요 버전으로 업그레이드하기 위한 요구 사항
주요 버전 업그레이드를 진행하기 전에, 먼저 유지 관리해야 할 모든 확장 기능, 복제 개체 및 애플리케이션 종속성을 검토하십시오.
일부 확장 기능 및 논리적 복제 개체는 특정 버전에만 적용되거나, ‘ PostgreSQL ’의 주요 버전과 일치해야 하는 서버 측 구성 요소에 의존합니다. 업그레이드 전에 해당 개체를 제거하면 오류를 방지할 수 있으며, 새 버전이 실행된 후 지원되는 개체만 다시 생성할 수 있습니다.
검토할 확장 기능 및 논리적 복제 개체
업그레이드 전에 다음 사항을 확인하십시오:
확장기능
pg_repackold_snapshotwal2jsonanonPostGIS
복제 슬롯
Logical replication slots
애플리케이션 종속성
애플리케이션이 의존하는 확장 기능이나 복제 개체를 제거하는 경우, 업그레이드를 진행하기 전에 데이터 흐름과 애플리케이션 동작을 확인하십시오. 또한, 특정 PostgreSQL 기능에 의존하는 애플리케이션 로직에 발생할 수 있는 장애 가능성도 고려하십시오.
pg_repack
업그레이드 전에 pg_repack 디렉터리를 삭제하고, 업그레이드 후에 다시 생성하십시오. pg_repack 는 버전별 확장자를 사용하며, 클라이언트/서버 구성 요소는 PostgreSQL의 주요 버전과 일치해야 합니다.
DROP EXTENSION pg_repack;
업그레이드 후에도 해당 확장 기능이 여전히 필요한 경우에만 이를 다시 생성하십시오.
CREATE EXTENSION pg_repack;
old_snapshot
업그레이드 전에 old_snapshot 를 삭제하십시오. PostgreSQL 18로 업그레이드한 후에는 더 이상 지원되지 않으므로 이 설정을 다시 생성하지 마십시오.
DROP EXTENSION old_snapshot;
wal2json 복제 슬롯
wal2json 를 논리적 디코딩에 사용하는 경우, 업그레이드 전에 관련 복제 슬롯을 모두 삭제해야 합니다. pg_upgrade 유틸리티는 복제 슬롯이 존재하는 동안 주요 버전 업그레이드를 엄격히 금지하며, 이 경우 치명적인 오류를 발생시키고 업그레이드를 중단합니다.
업그레이드 전:
- 보류 중인 모든 WAL 데이터가 처리되었는지 확인하십시오.
- 복제 슬롯을 사용하는 애플리케이션을 중지하십시오.
- 복제 슬롯을 삭제합니다:
SELECT pg_drop_replication_slot('your_slot_name');
업그레이드 후에는 필요에 따라 복제 슬롯을 다시 생성할 수 있습니다. wal2json 는 CREATE EXTENSION 를 통해 설치되는 것이 아니라, 데이터베이스 매개변수(wal_level, max_replication_slots, max_wal_senders) 및 테이블 권한을 통해 구성되며, 이러한 설정은
업그레이드를 방해하지 않습니다.
anon
업그레이드 전에 ‘ anon ’ 확장 프로그램을 제거하고, 업그레이드 후에도 계속 필요하면 다시 활성화하세요. anon 을 삭제하기 전에 몇 가지 추가 절차가 필요합니다.
anon 확장 프로그램이 설치되어 있는 경우, 업그레이드를 수행하기 전에 아래 단계를 완료하고 관리자 권한으로 명령어를 실행하십시오.
-
모든 마스킹 규칙을 제거합니다(활성화된 경우).
SELECT anon.remove_masks_for_all_columns(); -
마스킹 역할을 비활성화합니다(역할이 마스킹된 것으로 표시된 경우 업그레이드가 실패할 수 있습니다).
SECURITY LABEL FOR anon ON ROLE <role_name> IS NULL; -
anon확장자를 캐스케이드 옵션과 함께 삭제합니다.DROP EXTENSION anon CASCADE; -
인스턴스 내의 여러 데이터베이스에 ‘
anon’ 확장 프로그램이 설치된 경우, 각 데이터베이스에 대해 설명된 단계를 모두 수행하십시오. -
업그레이드가 완료되면
anon확장자를 다시 활성화하고 필요에 따라 마스킹 규칙을 다시 적용합니다.
업그레이드를 수행하기 전에 마스킹 일관성을 보장하기 위해 확장 프로그램 삭제 전후에 데이터의 유효성을 검사하는 것이 좋습니다.
PostGIS
PostGIS, 를 사용 중이라면, PostgreSQL 를 업그레이드하기 전에 먼저 PostGIS 를 업그레이드하십시오.
SELECT postgis_extensions_upgrade();
다음 쿼리를 사용하여 PostGIS 확장 프로그램 업그레이드의 유효성을 검사합니다.
SELECT postgis_full_version();
Logical replication slots
업그레이드 전에 모든 논리적 복제 슬롯을 삭제하고, 업그레이드 후에 다시 생성하십시오. 논리적 슬롯은 소스 서버의 상태와 연동되어 있으므로, 업그레이드된 인스턴스에서 완전히 새로 생성해야 합니다.
SELECT pg_drop_replication_slot('<slot_name>');
인플레이스 메이저 버전 업그레이드
현행 환경에서 주요 버전 업그레이드를 수행하면 배포 환경을 지원되는 대상 버전 주요 버전 으로 업그레이드할 수 있어, 새 배포 환경으로 마이그레이션( 백업 복원 )할 필요가 없습니다. 이 접근 방식은 배포를 재구성할 필요 없이 동일한 연결 문자열을 유지합니다. 그러나 새 주요 버전이 애플리케이션 조정을 요구하는 경우, 이를 반드시 해결해야 합니다.
메이저 버전 업그레이드 작업 기간 동안 배포 환경은 일시적인 중단을 경험하게 됩니다. 이는 해당 프로세스가 공급업체가 권장하는 업그레이드 방식을 따르기 때문에 예상되는 일입니다. 정확한 기간은 배포 스키마의 크기와 복잡성에 따라 달라질 수 있습니다. 이 기간 동안 서비스에서 업그레이드된 인스턴스에서 데이터를 읽어야 하는 경우 대기 인스턴스 생성 으로 이동하여 애플리케이션의 연결 세부 정보가 대기 상태를 가리키도록 업데이트할 수 있습니다. 이렇게 하면 업그레이드를 시작하기 전에 데이터베이스의 최신 복사본을 확보할 수 있습니다. 인플레이스 업그레이드가 성공적으로 완료되지 않을 경우, 대기 인스턴스를 승격시켜 주 인스턴스로 사용할 수도 있습니다. 자세한 내용은 주요 버전 업그레이드 시 읽기 전용 복제본 상태를 참조하세요.
Databases for PostgreSQL 고객이 자체 백업을 관리하는 데 유연성을 제공합니다. 인플레이스 메이저 버전 업그레이드 프로세스는 작업 전후에 자동으로 백업을 생성하지 않습니다. 업그레이드가 성공하지 못한 경우, 가장 최근의 유효한 백업에서 배포 내용을 복원하여 새 인스턴스에 적용해야 할 수 있습니다.
복구 작업을 원활하게 진행하려면, IPU 실행 전에 최신 백업을 생성하고 IPU가 완료된 직후에 또 다른 백업을 생성하는 것을 적극 권장합니다.
- IPU 수행 전에 백업을 수행하면 데이터 무결성을 보호할 수 있으며, 업그레이드가 실패할 경우 데이터베이스의 최신 상태를 복원할 수 있는 소스를 확보할 수 있습니다.
- IPU 직후에 백업을 수행하면 새로운 ‘ PostgreSQL ’ 주요 버전 타임라인에 대한 첫 번째 복원 지점이 생성됩니다.
- IPU가 성공적으로 완료된 후 다음 정기 백업까지 기다릴 경우, 해당 백업이 수행될 때까지 새 버전에 대한 PITR 및 복원 작업을 사용할 수 없습니다. IPU 시도가 이루어지기 전의 PITR 타임스탬프는 여전히 확인할 수 있습니다. 이를 통해 IPU 이전에 생성된 최신 백업을 PITR과 함께 사용하여, IPU 이전 버전의 PostgreSQL 을 새로운 배포 환경으로 복원할 수 있습니다. ‘백업 및 복원 업그레이드’를 사용할 때도 동일한 계획이 적용됩니다. 자세한 내용은 ‘특정 시점 복구(PITR) ’를 참조하십시오.
자동 백업 일정을 기다리지 않고 직접 두 번의 백업을 수행하면, 업그레이드 전후의 복구 지점을 보다 확실하게 확보할 수 있습니다.
시작하기 전에
업그레이드 절차를 시작하기 전에 다음 사항들을 고려하십시오.
-
UI, API, CLI 또는 Terraform을 사용하여 배포 기능 정보를 확인함으로써, 현재 배포 중인 버전에 대한 버전 업그레이드가 가능한지 확인하십시오.
예시: CLI를 사용하여 버전 업그레이드 정보 조회하기:
ibmcloud cdb capability-show versions postgresql -
IPU를 실행하기 전에 이 항목에 설명된 사전 확인 관련 요구 사항을 반드시 검토하시기 바랍니다. IPU는 소스 배포 환경에서 직접 실행되며, 새로운 인스턴스를 생성하지 않습니다. 고객의 안전을 위해, 이 서비스는 업그레이드 시작 전에 사전 점검을 수행하며, 위험이 감지될 경우 해당 작업을 차단합니다. 특히 다음 항목을 확인하십시오:
- 배포 구성원 수는 최대 3명입니다.
- 배포 상태가 정상입니다.
- 배포 환경에는 사용 가능한 디스크 공간이 최소 10% 이상 남아 있습니다. IPU 사전 검사의 기본 최대 허용 디스크 사용량은 90%입니다.
- 현재 배포 환경은 I/O 부하가 심하지 않습니다. IPU 사전 검사의 기본 최대 허용 I/O 사용률은 90%입니다.
- 스키마 크기와 객체 수는 기본 사전 검사 기준치 이내입니다. 기본적으로 개별 스키마의 크기는 100GB를 초과할 수 없으며, 인덱스와 시퀀스의 총 개수는 50,000개 미만이어야 합니다.
- 업그레이드 전에 필요한 모든 확장 및 논리적 복제 슬롯 정리를 완료했습니다.
-
각 주요 버전에는 이전 버전과 하위 호환되지 않을 수 있는 일부 기능이 포함되어 있습니다. 데이터베이스 공급업체의 릴리스 노트를 확인하여 애플리케이션에 영향을 미칠 수 있는 변경 사항이 있는지 확인하십시오.
-
배포를 이전 버전으로 다운그레이드하는 것은 지원되지 않습니다.
-
한 번 시작된 인플레이스 메이저 버전 업그레이드는 취소할 수 없습니다.
-
최신 백업본이 없다면, 업그레이드하기 전에 백업을 해두는 것이 좋습니다.
| 출처: PostgreSQL 버전 | 지원되는 현장 업그레이드 대상 |
|---|---|
| 14 | 15, 18 |
| 지원되는 그 외의 모든 소스 버전 | 18 |
또한, 업그레이드가 완료되면 데이터베이스가 새로운 PostgreSQL 메이저 버전을 사용하게 된다는 점에 유의하시기 바랍니다. PostgreSQL 는 데이터를 버전별 형식으로 저장하기 때문에, 업그레이드 이전의 백업 및 PITR 지점은 이전 버전의 타임라인에 속하므로 업그레이드된 버전으로 복원할 수 없습니다. 새 버전에서 전체 복원 및 PITR(특정 시점 복구) 기능을 유지하려면, 업그레이드가 완료된 직후 즉시 새로운 백업을 수행하십시오. 해당 백업은 새 버전 타임라인에서 향후 복구 작업의 기준이 됩니다.
IPU가 실패하더라도, 업그레이드 이전의 유효한 백업을 PITR과 함께 사용하여 이전 버전의 PostgreSQL 를 새 인스턴스로 복원할 수 있습니다.
UI에서 업그레이드
-
업그레이드 과정을 테스트하기 위해 새로운 ‘ Databases for PostgreSQL ’를 생성합니다.
동일한 버전의 기존 배포 환경에서 백업을 복원하여 배포 환경을 생성하십시오. -
스테이징 애플리케이션을 테스트 배포 환경으로 연결하십시오.
스테이징 애플리케이션을 테스트 배포 환경으로 가리키도록 업데이트하십시오. 테스트 애플리케이션이 스테이징 배포 환경에 성공적으로 연결될 수 있는지, 그리고 애플리케이션이 예상대로 작동하는지 확인하십시오. 스테이징 환경에 대한 모든 필수 성능 및 운영 테스트를 완료하십시오. -
개요 페이지에서 ‘ 메인 버전 업그레이드 ’ 버튼을 클릭하여 테스트 배포의 메이저 버전을 업그레이드하세요.
업그레이드가 완료되는 데 걸리는 시간을 확인하여, 업그레이드 만료 설정을 통해 업그레이드를 유지보수 시간 내에 완료할 수 있도록 하십시오. -
스테이징 애플리케이션이 새로운 데이터베이스 버전에서 정상적으로 작동하는지 확인하십시오.
애플리케이션이 정상적으로 작동한다면, 이 단계를 통해 프로덕션 데이터베이스를 안전하게 업그레이드할 수 있음을 확인할 수 있습니다. -
프로덕션 데이터베이스 배포 환경을 새 버전으로 업그레이드하십시오.
새로운 버전의 데이터베이스를 사용하여 애플리케이션이 정상적으로 작동하는지 확인한 후, 관리 콘솔로 돌아가 프로덕션 배포 환경을 업그레이드하는 절차를 시작할 수 있습니다. 개요 페이지의 배포 세부 정보 섹션에서 '메이저 버전 업그레이드' 버튼을 클릭하고 단계를 따르십시오.현장 업그레이드 프로세스가 시작되면 중지하거나 롤백할 수 없습니다. 따라서, 오류가 발생하는 극히 드문 경우에 데이터베이스 배포가 복구 불가능한 상태가 될 수 있습니다. 따라서, 새 배포 환경으로 복원할 수 있는 백업을 생성하십시오.
업그레이드 작업이 자동으로 취소되기 전에 반드시 시작해야 하는 '타임아웃' 기간을 설정할 수 있습니다 expiration for starting upgrade. 또한, 업그레이드가 원하는 시간 내에 완료되는지 확인하기 위해 스테이징 환경에서 미리 업그레이드를 테스트하십시오. 예를 들어, 1시간 이내에 업그레이드를 완료하고자 하고, 테스트 결과 업그레이드에 30분이 소요된다는 것을 알고 있다면, 업그레이드를
진행하겠다고 확인한 시점부터 30분 이내에 업그레이드 작업이 시작되어야 합니다. 따라서 만료 시간을 30분으로 설정하십시오. 그러면 해당 시간 내에 시작되지 않을 경우 작업이 지정된 시간을 초과하지 않도록 할 수 있습니다.
API를 통한 업그레이드
다음 명령을 사용하여 현장에서 업그레이드하십시오:
curl -X PATCH https://api.{region}.databases.cloud.ibm.com/v5/ibm/deployments/{id}/version -H 'Authorization: Bearer <>' -H 'Content-Type: application/json' -d '{"version": "15"}'
업그레이드 작업이 자동으로 취소되기 전에 반드시 시작해야 하는 '타임아웃' 기간을 설정할 수 있습니다 expiration for starting upgrade. 또한, 업그레이드가 원하는 시간 내에 완료되는지 확인하기 위해 스테이징 환경에서 미리 업그레이드를 테스트하십시오. 예를 들어, 1시간 이내에 업그레이드를 완료하고자 하고, 테스트 결과 업그레이드에 30분이 소요된다는 것을 알고 있다면, 업그레이드를
진행하겠다고 확인한 시점부터 30분 이내에 업그레이드 작업이 시작되어야 합니다. 따라서 만료 시간을 지금부터 30분 후의 타임스탬프로 설정하십시오. 이렇게 하면 해당 시간 내에 시작되지 않을 경우 작업이 지정된 시간을 초과하지 않도록 할 수 있습니다. 만료 시간은 현재 시점으로부터 5분(기본값)에서 24시간 사이여야 합니다. 자세한 내용은 API 를 Cloud Databases 참조하십시오.
CLI를 통한 업그레이드
CDB 플러그인 버전 >= 0.20.0 에서 사용 가능
배포에 허용된 업그레이드 및 복원 전환 목록을 보려면:
ibmcloud cdb deployment-capability-show <NAME|CRN> versions
필요한 매개변수로 명령어를 업그레이드하려면:
ibmcloud cdb deployment-version-upgrade <NAME|CRN> <TARGET_VERSION>
명령어 매개변수의 전체 세부 정보를 보려면:
ibmcloud cdb deployment-version-upgrade --help
업그레이드 작업이 자동으로 취소되기 전에 반드시 시작해야 하는 '타임아웃' 기간을 설정할 수 있습니다 expiration for starting upgrade. 또한, 업그레이드가 원하는 시간 내에 완료되는지 확인하기 위해 스테이징 환경에서 미리 업그레이드를 테스트하십시오. 예를 들어, 1시간 이내에 업그레이드를 완료하고자 하고, 테스트 결과 업그레이드에 30분이 소요된다는 것을 알고 있다면, 업그레이드를
진행하겠다고 확인한 시점부터 30분 이내에 업그레이드 작업이 시작되어야 합니다. 따라서 만료 시간을 30분으로 설정하십시오. 그러면 해당 시간 내에 시작되지 않을 경우 작업이 지정된 시간을 초과하지 않도록 할 수 있습니다. 만료 시간은 현재 시점으로부터 5분(기본값)에서 24시간 사이여야 합니다. CLI --expire-in 또는 를 사용하여 만료일을 설정하는 --expire-at 두 가지 방법이 있습니다. 자세한 내용은 해당 명령어의 도움말을 참조하십시오.
테라폼을 통한 업그레이드
테라폼 제공자 버전 >= 에서 사용 1.79.2 가능.
업그레이드하려면 구성 파일에서 값을 version 추가하거나 변경하기만 하면 됩니다.
버전 업그레이드 전에 백업을 생략하는 것은 위험하며, 업그레이드 과정 중 어느 단계에서든 실패할 경우 데이터 손실로 이어질 수 있습니다. 복구할 수 있는 최신 백업이 없기 때문입니다. 따라서, 현장에서의 주요 버전 업그레이드 작업을 시작하기 전에 최신 백업을 확보해 두시기 바랍니다.
업그레이드에는 기본 시간 제한보다 더 많은 시간이 소요될 수 있습니다. timeouts 속성을 사용하여 더 긴 타임아웃 값을 설정할 수 있습니다.
테라폼은 만료 타임스탬프 대신 타임아웃을 사용합니다. 따라서, 타임아웃 업데이트 값이 만료 시간으로 사용되므로 타임아웃 시간을 늘리십시오. 예를 들어, 20분으로 시간 제한을 설정하면 만료 시간이 20분으로 설정되며, 해당 시간 내에 업그레이드가 시작되지 않으면 만료되어 업그레이드가 시작되지 않습니다. 최대 유효 기간은 24시간이므로, 타임아웃을 36시간으로 설정하더라도 첫 24시간 이내에 업그레이드가 시작되지 않으면 만료된다는 점에 유의하십시오.
업그레이드가 진행 중인 경우, 일부 작업이 대기열에 등록되어 버전 업그레이드가 완료될 때까지 진행되지 않을 수 있으니 유의하시기 바랍니다.
문제점 해결
인플레이스 메이저 버전 업그레이드 후 애플리케이션에 예상치 못한 문제가 발생하여 이전 PostgreSQL 버전으로 되돌려야 하는 경우, 지원팀에 문의하여 안내를 받으십시오. 복구 과정을 복잡하게 만들 수 있으므로, 직접 PITR을 시작하거나 백업을 복원하지 마십시오.
모든 사전 검사가 통과될 때까지 인플레이스 주요 업그레이드는 진행되지 않습니다. 업그레이드가 소스 인스턴스에서 직접 수행되므로, 이러한 안전 장치는 사용자의 배포 환경을 보호하기 위해 마련되었습니다. 업그레이드가 차단된 경우 다음 영역을 검토하십시오:
- 멤버 수: 인플레이스 메이저 버전 업그레이드는 최대 3명의 멤버로 구성된 배포 환경을 지원합니다. 배포 구성원에 3명 이상이 포함된 경우, 사전 점검으로 인해 업그레이드가 차단됩니다. 수평 확장(horizontal scaling )을 통해 멤버를 제거할 수 없으므로, 업그레이드를 다시 시도하기 전에 IBM Cloud 지원팀에 지원 티켓을 제출하여 멤버 수를 줄이시기 바랍니다.
- 클러스터 상태: Patroni 클러스터가 정상적으로 작동하고, 리더/리플리카 상태가 명확하게 설정되어 있는지 확인하십시오. Patroni가 불안정성 또는 장애 조치 상태를 보고하는 경우 업그레이드를 진행할 수 없습니다.
- 디스크 공간: 사용 가능한 여유 공간이 충분한지 확인하십시오. 이 프로세스는 링크 모드를
pg_upgrade사용하며, 이는 충분한 헤드룸이 필요합니다. 디스크 사용량이 설정된 한도(기본값: 90%)를 초과할 경우, 재시도 전에 여유 공간을 확보하십시오. - 디스크 I/O 부하: 현재 I/O 사용률과 IOPS를 확인합니다. 시스템에 과부하가 걸릴 경우 성능 저하나 업그레이드 실패를 방지하기 위해 업그레이드가 일시 중지됩니다.
- 스키마 크기와 개체 수: 앞서 언급한 바와 같이, 스키마 크기는 인플레이스 메이저 버전 업그레이드 소요 시간에 직접적인 영향을 미칩니다. 개별 스키마가 최대 크기(기본값: 100GB)를 초과하지 않도록 하고, 인덱스 및 시퀀스 객체의 총 개수가 제한(기본값: 50,000개)을 넘지 않도록 하십시오. 대규모 스키마 또는 비정상적으로 많은 개체 수는 업그레이드 진행 전에 정리 또는 최적화가 필요할 수 있습니다.
pg_upgrade새로운 시스템 테이블을 생성하고 기존 사용자 데이터 파일을 재사용함으로써 신속한 업그레이드를 수행합니다. 이러한 시스템 테이블을 생성하는 데 소요되는 시간은 데이터베이스 개체 수에 비례합니다. 모니터링 통합을 사용하여 리소스 소비량을 평가할 수 있습니다. 모든 데이터베이스 구성 요소를 업그레이드할 수 없는 경우 업그레이드 작업이 실패합니다. 이는 유지보수 작업으로 인해 발생할 수 있습니다. 건강 상태 검사 실패로 인해 실패한 작업은 나중에 재시도할 수 있습니다. 작업이 계속 실패할 경우 IBM Cloud 지원팀 에 지원 티켓을 제출하십시오. 특정 검사가 귀하의 환경과 관련이 없는데도 업그레이드가 차단되는 경우, 추가 지원을 위해 지원 티켓을 생성하십시오.
읽기 전용 복제본에서 업그레이드
읽기 전용 복제본을 구성 하여 업그레이드하십시오. 배포 환경과 동일한 데이터베이스 버전을 가진 읽기 전용 복제본을 프로비저닝하고, 모든 데이터가 복제될 때까지 기다리십시오. 배포와 그 복제본이 동기화되면, 읽기 전용 복제본을 새로운 버전의 데이터베이스를 실행하는
완전한 독립형 배포로 승격 및 업그레이드하십시오. 업그레이드 및 승격 단계를 수행하려면, 요청 본문에 /deployments/{id}/remotes/promotion 업그레이드하려는 버전을 요청 본문에 포함하여 해당 엔드포인트로 POST 요청을
보내십시오.
이 요청은 다음과 같습니다.
curl -X POST \
https://api.{region}.databases.cloud.ibm.com/v5/ibm/deployments/{id}/remotes/promotion \
-H 'Authorization: Bearer <>' \
-H 'Content-Type: application/json' \
-d '{
"promotion": {
"version": "14",
"skip_initial_backup": false
}
}' \
skip_initial_backup은 선택사항입니다. true로 설정된 경우 새 배치가 승격을 완료한 후 초기 백업을 작성하지 않습니다. 더 짧은 시간 내에 새 배치를 사용할 수 있지만 대신 다음 자동 백업이 실행되거나 On-Demand 백업을 작성할 때까지 백업되지 않습니다.
승격 및 업그레이드 시범 실행
주요 버전 업그레이드의 영향을 평가하려면 모의 실행을 수행하십시오. 건식 실행은 승격 및 업그레이드를 시뮬레이션하며 결과는 데이터베이스 로그에 인쇄됩니다. 로그 분석 통합 를 통해 데이터베이스 로그에 액세스하고 확인할 수 있습니다. 이를 통해 현재 실행 중인 버전과 해당 확장 기능을 원하는 버전으로 성공적으로 업그레이드할 수 있습니다.
시범 실행은 skip_initial_backup이 false로 설정되고 version이 정의된 상태에서만 실행해야 합니다.
명령은 다음과 같습니다.
curl -X POST \
https://api.{region}.databases.cloud.ibm.com/v5/ibm/deployments/{id}/remotes/promotion \
-H 'Authorization: Bearer <>' \
-H 'Content-Type: application/json' \
-d '{
"promotion": {
"version": "14",
"skip_initial_backup": false,
"dry_run": true
}
}' \
업그레이드 시 백업 및 복원
새 데이터베이스 버전을 실행 중인 새 배치로 데이터의 백업을 복원 하여 데이터베이스 버전을 업그레이드할 수 있습니다.
UI에서 업그레이드
_배치 대시보드_의 백업 메뉴에서 백업을 복원 할 때 새 버전으로 업그레이드하십시오. 새 탭의 프로비저닝 페이지로 이동하는 백업에서 복원을 클릭하면 새 배포에 대한 몇 가지 옵션을 변경할 수 있습니다. 옵션 중 하나는 데이터베이스 버전으로, 사용자가 업그레이드할 수 있는 버전이 자동으로 표시됩니다. 버전을 선택한 후 ‘생성’을 클릭하여 프로비저닝 및 복원 프로세스를 시작하십시오.
CLI를 통한 업그레이드
IBM Cloud CLI를 통해 백업에서 업그레이드 및 복원을 수행하려면 리소스 컨트롤러에서 프로비저닝 명령을 사용하십시오.
ibmcloud resource service-instance-create <DEPLOYMENT_NAME_OR_CRN> <SERVICE_ID> <SERVICE_PLAN_ID> <REGION> <SERVICE-ENDPOINTS>
service-name, service-id, service-plan-id, region 및 service-endpoints 매개변수는 모두 필수입니다. 또한 JSON 오브젝트에 버전 및 백업 ID 매개변수와 함께 -p를 제공합니다. 새 배치는 백업 시 소스 배치와 동일한 디스크 및 메모리로
자동으로 크기가 조정됩니다.
이 명령은 다음과 같습니다.
ibmcloud resource service-instance-create example-upgrade databases-for-postgresql standard us-south \
-p \ '{
"backup_id": "crn:v1:bluemix:public:databases-for-postgresql:us-south:a/54e8ffe85dcedf470db5b5ee6ac4a8d8:1b8f53db-fc2d-4e24-8470-f82b15c71717:backup:06392e97-df90-46d8-98e8-cb67e9e0a8e6",
"version":14
}'--service-endpoints "public"
API를 통한 업그레이드
리소스 컨트롤러 API 을 백업에서 업그레이드하는 데 사용하기 전에 필요한 단계를 완료하세요. 그런 다음 API에 POST 요청을 전송합니다.
name, target, resource_group 및 resource_plan_id 매개변수는 모두 필수입니다. 또한 버전 및 백업 ID를 제공합니다. 새 배치는 백업 시 소스 배치와 동일한 메모리 및 디스크 할당을 가집니다.
이 명령은 다음과 같습니다.
curl -X POST \
https://resource-controller.cloud.ibm.com/v2/resource_instances \
-H 'Authorization: Bearer <>' \
-H 'Content-Type: application/json' \
-d '{
"name": "my-instance",
"target": "bluemix-us-south",
"resource_group": "5g9f447903254bb58972a2f3f5a4c711",
"resource_plan_id": "databases-for-postgresql-standard",
"backup_id": "crn:v1:bluemix:public:databases-for-postgresql:us-south:a/54e8ffe85dcedf470db5b5ee6ac4a8d8:1b8f53db-fc2d-4e24-8470-f82b15c71717:backup:06392e97-df90-46d8-98e8-cb67e9e0a8e6",
"version":14
}'
강제 업그레이드
종료일 이후에는, 사용 중단된 버전의 모든 활성 Databases for PostgreSQL 배포가 다음 지원 버전으로 강제 업그레이드됩니다. 예를 들어, PostgreSQL 버전 13(사용 중단됨)은 버전 14로 업그레이드됩니다.
다음과 같은 위험을 피하려면 사용 기간 종료일 전에 업그레이드하세요:
- 이러한 유형의 강제 업그레이드에는 SLA가 제공되지 않습니다.
- 데이터가 일부 손실될 수 있습니다.
- 서비스 이용에 장시간 중단이 발생할 수 있습니다.
- 응용 프로그램이 새 버전과 호환되지 않으면 작동하지 않을 수 있습니다.
- 이 업그레이드가 배포에 적용되는 시기를 제어할 수는 없습니다.
- 이 강제 업그레이드에는 롤백 프로세스가 없습니다.
사용 종료 날짜는 버전 정책 페이지를 참조하세요.
버전 업그레이드 시 발생하는 역할 권한 문제
PostgreSQL 16부터 역할 기반 권한 적용이 더욱 엄격해졌습니다. 이는 PostgreSQL 의 상위 아키텍처 변경 사항이며, {{site.data.keyword.ibm}} 에 특화된 동작 변경 사항은 아닙니다. 이전 버전에서는 CREATEROLE 속성이 지정된 역할이 다른 역할을 더 광범위하게 관리할 수 있었습니다. PostgreSQL 16 및 이후 버전에서는, 특정 역할을
부여하거나 취소하려면 해당 역할이 다른 역할에 대한 ‘ ADMIN OPTION ’ 권한을 가지고 있어야 합니다. 배경 정보는 ‘ PostgreSQL ’ 16호( 업데이트 내역), 역할 속성 및 GRANT 역할에 대하여 을 참조하십시오.
PostgreSQL 15 이하 버전에서 PostgreSQL 16 이상 버전으로 업그레이드하는 경우, IPU를 수행하기 전에 역할 할당 사항을 확인하십시오. 업그레이드 후에도 역할 관리가 계속되어야 하는 경우, 업그레이드를 시작하기 전에 WITH ADMIN OPTION 명령어를 사용하여 필요한 역할이 부여되었는지 확인하십시오.
업그레이드 후 다음과 같은 권한 관련 오류가 발생하는 경우:
ERROR: only roles with the ADMIN OPTION on role "some_role" may grant this role
DETAIL: role "admin" is not permitted to grant role "some_role"
내장 헬퍼 함수 grant_admin_option_to_roles 를 사용하여 특정 역할에 대해 ADMIN OPTION 를 복원하려면:
- 이 내용은 (앞서 설명한 오류가 발생하는 경우) PostgreSQL v15 및 그 이전 버전에서 PostgreSQL 16 이상으로 업그레이드한 데이터베이스에만 적용됩니다.
- 수정 사항을 적용할 임의의 역할 목록을 허용합니다.
- 이 작업은 ‘
admin’ 사용자만 수행할 수 있습니다. - 여러 번 실행해도 안전합니다(비활성).
샘플 사용법:
SELECT grant_admin_option_to_roles('role1', 'role2', 'role3');
이 함수는 ADMIN OPTION 계정을 가진 admin 사용자에게 지정된 역할(role1, role2, role3)을 부여하여, admin 사용자가 업그레이드된 인스턴스에서 해당 역할을 관리(부여, 취소, 변경 또는 삭제)할 수 있도록 합니다.