버전 에서 5.1 버전 EDB Postgres 로 업그레이드 5.3

인스턴스 관리자는 버전 에서 5.1 버전 로 EDB Postgres 업그레이드할 5.3 수 있습니다.

누가 이 작업을 완료해야 합니까?

인스턴스 관리자 업그레이드하려면 인스턴스 EDB Postgres 관리자여야 합니다. 인스턴스 관리자는 다음 프로젝트의 소프트웨어를 관리할 권한이 있습니다:

인스턴스에 대한 운영자 프로젝트

이 인스턴스의 연산자는 EDB Postgres operators 프로젝트에 설치되어 있습니다. 업그레이드 명령어에서 환경 ${PROJECT_CPD_INST_OPERATORS} 변수 `$PATH`는 운영자의 프로젝트를 가리킵니다.

인스턴스에 대한 피연산자 프로젝트

사용자 정의 리소스 와 control plane 는 operands EDB Postgres 프로젝트에 설치됩니다. 업그레이드 명령어에서 환경 변수 ` ${PROJECT_CPD_INST_OPERANDS} $PATH`는 작업 대상 프로젝트를 가리킵니다.

이 작업을 언제까지 완료해야 합니까?

다음 옵션을 검토하여 이 작업을 완료해야 하는지 여부를 결정하십시오:

  • 하나 이상의 서비스와 IBM Software Hubcontrol plane 함께 업그레이드하려면, 대신 IBMSoftware Hub 인스턴스 업그레이드 과정을 따르십시오.
  • 업그레이드할 때 EDB PostgresIBM Software Hubcontrol plane 업그레이드하지 않았다면, 이 작업을 완료하여 업그레이드하십시오 EDB Postgres.

    필요에 따라 반복하십시오. 여러 인스턴스를 관리하는 IBM Software Hub 경우, 이 작업을 반복하여 클러스터 내의 더 많은 EDB Postgres 인스턴스를 업그레이드할 수 있습니다.

이 태스크를 완료하는 데 필요한 정보

업그레이드하기 전에 다음 EDB Postgres 정보를 검토하십시오 :

버전 요구사항

의 인스턴스와 연관된 모든 구성 IBM Software Hub 요소는 동일한 릴리스에서 설치되어야 합니다. 예를 들어, 가 버전 IBM Software Hubcontrol plane5.3.1 경우, 를 버전 으로 EDB Postgres5.3.1 업그레이드해야 합니다.

환경 변수
이 작업의 명령어는 환경 변수를 사용하므로, 작성된 그대로 정확히 실행할 수 있습니다.
  • 환경 변수를 정의하는 스크립트가 없는 경우, 설치 환경 변수 설정을 참조하십시오.
  • 스크립트에서 환경 변수를 사용하려면, 이 작업의 명령어를 실행하기 전에 환경 변수를 소스 처리해야 합니다. 예를 들면, 다음을 실행하십시오.
    source ./cpd_vars.sh

시작하기 전에

이 작업은 다음의 전제 조건이 충족된다는 것을 가정합니다:

시스템 요구사항
이 작업은 클러스터가 최소 요구 사항을 충족한다고 EDB Postgres 가정합니다.
자세한 정보를 찾을 위치
이 작업이 완료되지 않은 경우 시스템 요구 사항을 참조하십시오.
또한 GPU가 필요한 기능을 사용할 계획이라면, 해당 기능에 적합한 유형과 수의 GPU를 EDB Postgres 보유하고 있는지 확인하십시오.
자세한 정보를 찾을 위치
이 작업이 완료되지 않은 경우 GPU 요구 사항을 참조하십시오.
워크스테이션
이 작업은 업그레이드를 실행할 워크스테이션이 클라이언트 워크스테이션으로 설정되어 있으며 다음 명령줄 인터페이스를 갖추고 있다고 가정합니다:
  • IBM Software Hub CLI: cpd-cli
  • OpenShift® CLI: oc
  • Helm CLI: oc
자세한 정보를 찾을 위치
이 작업이 완료되지 않은 경우, 클라이언트 워크스테이션 업데이트를 참조하십시오.
제어 플레인
이 작업은 가 IBM Software Hubcontrol plane 업그레이드된 상태를 전제로 합니다.
자세한 정보를 찾을 위치
이 작업이 완료되지 않은 경우, 인스턴스 업그레이드하기를 IBMSoftware Hub 참조하십시오.
개인용 컨테이너 레지스트리
사용 중인 환경이 사설 컨테이너 레지스트리를 사용하는 경우(예: 클러스터가 에어갭 상태인 경우), 이 작업은 다음 작업들이 완료되었음을 전제로 합니다:
  1. 소프트웨어 EDB Postgres 이미지는 사설 컨테이너 레지스트리에 미러링됩니다.
    자세한 정보를 찾을 위치
    이 작업이 완료되지 않은 경우, '이미지를 개인 컨테이너 레지스트리로 미러링하기'를 참조하십시오.
  2. 해당 구성은 사설 컨테이너 레지스트리에서 cpd-cli 이미지를 olm-utils-v4 가져오도록 설정되어 있습니다.
    자세한 정보를 찾을 위치
    이 작업이 완료되지 않은 경우, 사설 컨테이너 레지스트리에서 이미지 olm-utils-v4 가져오기를 참조하십시오.
GPU 운영자
GPU가 필요한 기능을 사용할 계획이라면, 이 작업은 GPU 사용에 필요한 운영자가 설치되어 있다고 가정합니다.
자세한 정보를 찾을 위치
이 작업이 완료되지 않은 경우, GPU가 필요한 서비스용 오퍼레이터 설치를 참조하십시오.
클러스터 범위 리소스
이 작업은 사용자 정의 리소스 정의, 클러스터 역할, 클러스터 역할 바인딩과 같은 클러스터 범위 리소스가 업데이트되었음을 가정합니다.
자세한 정보를 찾을 위치
이 작업이 완료되지 않은 경우, 플랫폼 및 서비스에 대한 클러스터 범위 리소스 업데이트를 참조하십시오.
이미지 풀 시크릿
이 작업은 인스턴스의 이미지 풀 자격 증명을 포함하는 시크릿이 존재한다고 가정합니다.
자세한 정보를 찾을 위치
이 작업이 완료되지 않은 경우, 인스턴스에 대한 이미지 풀 시크릿 IBMSoftware Hub 생성을 참조하십시오.

프로시저

업그레이드하려면 다음 EDB Postgres 작업을 완료하세요:

  1. 서비스 인스턴스를 최신 버전으로 업그레이드하기 위한 준비 PostgreSQL
  2. 서비스 업그레이드
  3. 업그레이드 검증
  4. 기존 서비스 인스턴스 업그레이드
  5. 다음에 무엇을 해야 할까

서비스 인스턴스를 최신 버전으로 업그레이드하기 위한 준비 PostgreSQL

업그레이드하기 전에 EDB Postgres, 서비스와 연결된 PostgreSQL 클러스터가 최신 버전의 서비스에서 제공되는 모든 새 기능을 PostgreSQL적용하도록 구성되었는지 확인하십시오.

  1. 서비스 인스턴스 EDB Postgres 목록을 가져옵니다:
    oc get CPDEdbInstance \
    --namespace=${PROJECT_CPD_INST_OPERANDS}
  2. 클러스터 PostgreSQL 목록을 가져옵니다:
    oc get clusters.postgresql.k8s.enterprisedb.io \
    -n ${PROJECT_CPD_INST_OPERATORS}
  3. 명령어가 oc get CPDEdbInstance 반환한 각 서비스 인스턴스에 대해, 해당 PostgreSQL 클러스터를 식별하십시오.
    예를 들어, 다음과 같은 이름의 두 EDB Postgres 서비스 인스턴스가 있는 경우:
    • na-sales
    • ap-sales
    해당 PostgreSQL 클러스터들은 다음과 같이 명명될 것입니다:
    • na-sales-edb-db
    • ap-sales-edb-db
  4. 서비스 EDB Postgres 인스턴스와 연관된 각 PostgreSQL 클러스터에 대해:
    1. 서비스 인스턴스와 연관된 PostgreSQL 클러스터의 이름으로 환경 CLUSTER_NAME 변수를 설정하십시오
      export CLUSTER_NAME=<cluster-name>
    2. 매개변수 primaryUpdateMethod 값을 확인하십시오:
      oc get clusters.postgresql.k8s.enterprisedb.io ${CLUSTER_NAME} \
      -n ${PROJECT_CPD_INST_OPERATORS} \
      -o json | jq -r '.spec.primaryUpdateMethod'
      • 값이 인 경우 다음 switchover 단계로 진행하십시오.
      • 값이 인 경우 restart, 클러스터를 패치하여 를 로 primaryUpdateMethod 변경하십시오 switchover:
        oc patch cluster.postgresql.k8s.enterprisedb.io ${CLUSTER_NAME}  \
        --namespace ${PROJECT_CPD_INST_OPERATORS} \
        --type=merge \
        --patch '{ "spec": {"primaryUpdateMethod": "switchover"}}'
    3. 매개변수 enableSuperuserAccess 값을 확인하십시오:
      oc get clusters.postgresql.k8s.enterprisedb.io ${CLUSTER_NAME} \
      -n ${PROJECT_CPD_INST_OPERATORS} \
      -o json | jq -r '.spec.enableSuperuserAccess'
      • 값이 인 경우 다음 true 단계로 진행하십시오.
      • 값이 인 경우 false, 클러스터를 패치하여 를 로 enableSuperuserAccess 변경하십시오 true:
        oc patch cluster.postgresql.k8s.enterprisedb.io <cluster-name>  \
        --namespace ${PROJECT_CPD_INST_OPERATORS} \
        --type=merge \
        --patch '{ "spec": {"enableSuperuserAccess": true}}'
    4. 매개변수 logLevel 값을 확인하십시오:
      oc get clusters.postgresql.k8s.enterprisedb.io ${CLUSTER_NAME} \
      -n ${PROJECT_CPD_INST_OPERATORS} \
      -o json | jq -r '.spec.logLevel'
      • 값이 인 경우 서비스 info 업그레이드로 진행하십시오.
      • 값이 가 아닌 경우 info, 클러스터를 패치하여 를 로 logLevel 변경하십시오 info:
        oc patch cluster.postgresql.k8s.enterprisedb.io <cluster-name>  \
        --namespace ${PROJECT_CPD_INST_OPERATORS} \
        --type=merge \
        --patch '{ "spec": {"logLeve": "info"}}'

서비스 업그레이드

업그레이드하려면 EDB Postgres :

  1. 클러스터에 Red Hat® OpenShift Container Platform cpd-cli 로그인하십시오:
    ${CPDM_OC_LOGIN}
    기억하세요: CPDM_OC_LOGINcpd-cli manage login-to-ocp 명령어의 별칭입니다.
  2. . EDB Postgres 에 대한 운영자 및 사용자 정의 리소스를 업데이트하십시오.
    cpd-cli manage install-components \
    --license_acceptance=true \
    --components=edb_cp4d \
    --release=${VERSION} \
    --operator_ns=${PROJECT_CPD_INST_OPERATORS} \
    --instance_ns=${PROJECT_CPD_INST_OPERANDS} \
    --image_pull_prefix=${IMAGE_PULL_PREFIX} \
    --image_pull_secret=${IMAGE_PULL_SECRET} \
    --upgrade=true

업그레이드 검증

EDB Postgres install-components 명령이 반환될 때 업그레이드됩니다:
[SUCCESS]... The install-components command ran successfully

사용자 지정 리소스 상태가 인지 확인하려면 다음 cpd-cli manage get-cr-statusCompleted 명령을 실행할 수 있습니다:

cpd-cli manage get-cr-status \
--cpd_instance_ns=${PROJECT_CPD_INST_OPERANDS} \
--components=edb_cp4d

기존 서비스 인스턴스 업그레이드

업그레이드 후에는 관련 서비스 인스턴스를 EDB Postgres EDB Postgres 반드시 업그레이드해야 합니다.

서비스 인스턴스를 업그레이드하려면:

  1. 인스턴스 관리자로 Red Hat OpenShift Container Platform 로그인하십시오.
    ${OC_LOGIN}
    기억하세요: OC_LOGINoc login 명령어의 별칭입니다.
  2. 서비스 인스턴스 EDB Postgres 목록을 가져옵니다:
    oc get CPDEdbInstance \
    --namespace=${PROJECT_CPD_INST_OPERANDS}
  3. 업그레이드하려는 서비스 인스턴스의 이름으로 환경 INSTANCE_NAME 변수를 설정하십시오:
    export INSTANCE_NAME=<instance-name>
  4. 클러스터의 Cloud Pak for Data 버전과 일치하는 버전으로 환경 INSTANCE_VERSION 변수를 설정하십시오:
    export INSTANCE_VERSION=<version>

    다음 표를 사용하여 적절한 값을 결정하십시오:

    IBM Software Hub버전 추가 기능 버전 서비스 인스턴스 버전
    (하나 선택)
    5.3.1 5.3.1 13.23, 14.20, 15.15, 16.11, 17.7, 18.1
    5.3.0 5.3.0 13.22, 14.19, 15.14, 16.10, 17.6
    참고: 메이저 버전 EDB Postgres 업그레이드를 직접 지원하지 않습니다. 그들은.NET PostgreSQL 프레임워크에 대해 롤링 업데이트 또는 소규모 릴리스 업그레이드만 지원합니다. 자세한 내용은 EDB PostgreSQL Rolling Updates 를 참조하십시오.

    사용자는 EDB PostgreSQL 데이터베이스 가져오기에서 설명된 대로 주요 버전 업그레이드 시 병렬 업그레이드를 수행해야 합니다.

    메이저 버전 업그레이드가 필요한 경우 최신 버전으로 업그레이드하십시오.

  5. 서비스 인스턴스 사용자 지정 리소스에서 버전을 업데이트하십시오:
    oc patch CPDEdbInstance ${INSTANCE_NAME} \
    --namespace=${PROJECT_CPD_INST_OPERANDS} \
    --type=merge \
    --patch='{"spec": {"version": "${INSTANCE_VERSION}"}}'
    참고: 버전부터 서비스 인스턴스 사용자 지정 리소스에서 5.2.x 버전을 업데이트하기 위해 다음 명령어도 지원됩니다:
    ./cpd-cli service-instance upgrade \
      --instance-name=${INSTANCE_NAME} \
      --service-type=edb \
      --profile=${CPD_PROFILE_NAME} \
      --version=5.2.0 \
      --merge-override=true \
      --override=parameters.yaml
    다음은 파일의 parameters.yaml 샘플입니다:
    parameters:
     version: '${INSTANCE_VERSION}'
  6. operands 프로젝트의 각 서비스 인스턴스를 업그레이드하려면 앞서 설명한 단계를 반복하십시오.

다음에 수행할 작업

기존 EDB Postgres 데이터베이스 인스턴스는 사용 준비가 완료되었습니다. EDB Postgres 서비스에 대한 설치 후 설정을 완료해야 EDB Postgres 에 액세스할 수 있습니다.