Kubernetes에서 AlloyDB Omni의 부 버전 데이터베이스 업그레이드 실행

문서 버전을 선택합니다.

이 페이지에서는 Kubernetes에서 AlloyDB Omni의 데이터베이스 부 버전을 업그레이드하는 방법을 설명합니다.

데이터베이스 부 버전 업그레이드를 수행하는 방법에는 두 가지가 있습니다.

  • 다운타임이 적은 업그레이드: AlloyDB Omni 버전 15.7.1 이상을 실행하는 고가용성 (HA) 환경의 경우 AlloyDB Omni에서 먼저 대기 인스턴스를 업그레이드합니다. 그러면 AlloyDB Omni 연산자가 전환을 실행하여 업그레이드된 대기 인스턴스 중 하나를 새 기본 인스턴스로 승격합니다. 전환이 완료되면 이전 기본 인스턴스가 업데이트됩니다.

    이 프로세스를 통해 업그레이드 중에 다운타임을 최소화할 수 있습니다.

  • 동시 업그레이드: 그 밖의 모든 경우 AlloyDB Omni 연산자는 모든 인스턴스를 동시에 업그레이드합니다. 즉, 업그레이드 중에 다운타임이 발생합니다.

제한사항

다운타임이 적은 업그레이드의 경우 언제든지 하나의 대기 인스턴스를 사용할 수 없습니다. 데이터베이스 클러스터가 복구 시점 목표 (RPO)에 도달하지 않고 데이터 손실 위험이 없도록 하려면 데이터베이스 클러스터에 기본 인스턴스 1개와 대기 인스턴스가 2개 이상 있어야 합니다.

시작하기 전에

  • 클러스터가 HA이고 AlloyDB Omni 버전이 15.7.1 이전인 경우 이 부 버전 업그레이드 프로세스를 따르기 전에 데이터베이스 클러스터 업데이트에 나열된 단계를 따르세요.
  • 부 버전을 업그레이드할 수 있는 트래픽이 적은 기간을 파악합니다.
  • 데이터 손실을 방지하려면 데이터를 백업하세요.

다운타임이 적은 부 데이터베이스 버전 업그레이드 프로세스 사용 설정

다운타임이 적은 부 데이터베이스 버전 업그레이드 프로세스를 사용 설정하려면 데이터베이스 클러스터에 다음 주석을 추가하세요.

kubectl annotate dbclusters.alloydbomni.dbadmin.goog DB_CLUSTER_NAME
dbcluster.dbadmin.goog/enableLDTM=true

다음 변수를 바꿉니다.

  • DB_CLUSTER_NAME: 데이터베이스 클러스터의 이름입니다. 데이터베이스 클러스터를 만들 때 제공한 데이터베이스 클러스터 이름과 동일합니다. 자세한 내용은 Kubernetes에 AlloyDB Omni 설치를 참고하세요.

AlloyDB Omni 버전 업그레이드

16.8.0 버전을 업그레이드하려면 클러스터의 매니페스트 파일에서 databaseVersioncontrolPlaneAgentsVersion 필드를 업데이트한 후 파일을 다시 적용합니다.

다음은 databaseVersion의 버전 16.8.0과 controlPlaneAgentsVersion의 버전 1.5.0을 지정하는 매니페스트 파일의 시작 부분입니다.

apiVersion: alloydbomni.dbadmin.goog/v1
kind: DBCluster
metadata:
    name: DB_CLUSTER_NAME
spec:
    databaseVersion: "16.8.0"
    controlPlaneAgentsVersion: "1.5.0"
...

다음 변수를 바꿉니다.

  • DB_CLUSTER_NAME: 데이터베이스 클러스터의 이름입니다. 데이터베이스 클러스터를 만들 때 제공한 데이터베이스 클러스터 이름과 동일합니다. 자세한 내용은 Kubernetes에 AlloyDB Omni 설치를 참고하세요.

업그레이드 프로세스 모니터링

매니페스트 파일을 업데이트하면 AlloyDB Omni 연산자가 업그레이드 프로세스를 시작합니다. 업그레이드 프로세스를 모니터링하려면 DBCUpgradeInProgress 조건을 확인하세요.

kubectl get dbclusters.alloydbomni.dbadmin.goog DB_CLUSTER_NAME -o yaml | yq '.status.conditions[] | select(.type == "DBCUpgradeInProgress")'

다음 변수를 바꿉니다.

  • DB_CLUSTER_NAME: 데이터베이스 클러스터의 이름입니다. 데이터베이스 클러스터를 만들 때 제공한 데이터베이스 클러스터 이름과 동일합니다. 자세한 내용은 Kubernetes에 AlloyDB Omni 설치를 참고하세요.

프로세스가 진행되는 동안 상태는 true입니다. 프로세스가 완료되면 조건의 상태가 false로 변경됩니다.

문제 해결

업그레이드 프로세스 중에 실패 메시지가 표시되면 다음 섹션을 참고하세요.

업그레이드 전 실패

데이터베이스 클러스터에서 업그레이드 전 오류가 발생하면 메시지를 확인하고 그에 따라 문제를 해결하세요.

업그레이드 전 실패 메시지를 우회하려면 force-upgrade 주석을 사용 설정하면 됩니다.

kubectl annotate dbclusters.alloydbomni.dbadmin.goog DB_CLUSTER_NAME upgrade.alloydbomni.dbadmin.google/force-upgrade=true

다음 변수를 바꿉니다.

  • DB_CLUSTER_NAME: 데이터베이스 클러스터의 이름입니다. 데이터베이스 클러스터를 만들 때 제공한 데이터베이스 클러스터 이름과 동일합니다. 자세한 내용은 Kubernetes에 AlloyDB Omni 설치를 참고하세요.

업그레이드 프로세스가 완료되면 force-upgrade 주석을 false로 설정합니다.

업그레이드 실패

자동 업그레이드 프로세스 중에 HA 환경에서 실패할 수 있는 여러 지점이 있습니다. 각 실패 시나리오와 AlloyDB Omni 연산자가 취하는 후속 조치에 관한 자세한 내용은 다음 표를 참고하세요.

실패 메시지 설명 필요한 사용자 작업
standby instance upgrade succeeded but the replication lag of the standby(s) is too high to be promoted to synchronous standby(s)

업그레이드 프로세스는 성공했지만 대기 인스턴스가 동기 복제를 설정하기 위해 기본 인스턴스를 따라잡지 못했습니다.

기본 인스턴스로 많은 트래픽이 이동합니다. 트래픽이 감소하면 대기 인스턴스가 점진적으로 따라잡습니다. 이 작업이 완료되면 HAReady 조건이 true이 됩니다.

마이너 버전이 다른 기본 및 대기 인스턴스 수정 에서 옵션을 선택합니다.

all standbys upgrade succeeded but the switchover instance failed to promote an upgraded standby.

대기 인스턴스가 업그레이드되었지만 전환 프로세스가 실패했습니다.

  1. 전환 커스텀 리소스의 상태를 확인하여 실패 원인을 파악합니다.
  2. 마이너 버전이 다른 기본 인스턴스와 대기 인스턴스 수정 에서 옵션을 선택합니다.
standby instance upgrade failed but rollback succeeded.

대기 인스턴스가 업그레이드되지 않았지만 AlloyDB Omni 연산자가 이전 버전으로 복원했습니다.

  1. 업그레이드 실패 메시지를 확인합니다.
  2. 마이너 버전이 다른 기본 인스턴스와 대기 인스턴스 수정 에서 옵션을 선택합니다.
standby instance upgrade failed and rollback failed.

대기 인스턴스가 업그레이드되지 않았으며 AlloyDB Omni 연산자가 인스턴스를 이전 버전으로 복원할 수 없습니다.

문제를 해결하려면 Google 지원팀에 문의 하세요.

부 버전이 다른 기본 인스턴스와 대기 인스턴스 수정

이 문제를 해결하려면 다음 옵션 중 하나를 선택하세요.

  • 업그레이드 실패를 일으킨 문제가 해결되면 업그레이드를 다시 시도합니다.

    업그레이드를 다시 시도하려면 인스턴스에서 업그레이드의 start-time 주석을 삭제하세요. 주석을 삭제하면 AlloyDB Omni 연산자가 새 시작 시간을 생성하고 업그레이드 프로세스를 다시 시작합니다.

    kubectl annotate dbclusters.alloydbomni.dbadmin.goog DB_CLUSTER_NAME upgrade.alloydbomni.dbadmin.google/start-time-
    

    다음 변수를 바꿉니다.

    • DB_CLUSTER_NAME: 데이터베이스 클러스터의 이름입니다. 데이터베이스 클러스터를 만들 때 제공한 데이터베이스 클러스터 이름과 동일합니다. 자세한 내용은 Kubernetes에 AlloyDB Omni 설치를 참고하세요.
  • 업그레이드 실패를 일으킨 문제가 지속되면 인스턴스를 이전 AlloyDB Omni 연산자 버전으로 다운그레이드합니다.

    인스턴스를 다운그레이드하려면 업그레이드 프로세스를 따르고 매니페스트 파일의 databaseVersioncontrolPlaneAgentsVersion 필드를 이전에 사용한 버전으로 변경합니다.