데이터베이스 주 버전 인플레이스 업그레이드

이 페이지에서는 PostgreSQL용 AlloyDB 클러스터의 데이터베이스 인플레이스 주 버전 업그레이드를 실행하는 방법을 설명합니다. 데이터베이스 인플레이스 주 버전 업그레이드 사용 사례, 워크플로, 자동 백업에 대해 알아보려면 데이터베이스 인플레이스 주 버전 업그레이드 개요를 참고하세요.

주요 데이터베이스 버전 업그레이드 계획

다음 단계에 따라 주요 데이터베이스 버전 업그레이드를 계획하세요.

  1. 현재 데이터베이스 주 버전을 찾습니다.

    콘솔

    1. Google Cloud 콘솔에서 클러스터 페이지로 이동합니다.

      클러스터로 이동

    2. 목록에서 클러스터를 선택합니다. 개요 페이지가 나타납니다.

    3. 버전 필드에서 데이터베이스 주 버전을 찾습니다.

    gcloud

    gcloud CLI 설치 및 시작에 대한 자세한 내용은 gcloud CLI 설치를 참고하세요. Cloud Shell 시작 방법에 대한 자세한 내용은 Cloud Shell 사용을 참고하세요.

    다음 명령어를 실행하여 현재 메인 버전을 비롯한 클러스터 세부정보를 가져옵니다.

    gcloud alloydb clusters describe CLUSTER_ID --region=REGION

    다음을 바꿉니다.

    • CLUSTER_ID: 클러스터 ID
    • REGION: 클러스터 위치 또는 리전

    REST v1beta

    다음 요청을 실행하여 현재 메인 버전을 비롯한 클러스터 세부정보를 가져옵니다.

    GET https://alloydb.googleapis.com/v1beta/projects/PROJECT_ID/locations/REGION/clusters/CLUSTER_ID

    다음을 바꿉니다.

    • CLUSTER_ID: 클러스터 ID
    • PROJECT_ID: 프로젝트 ID
    • REGION: 클러스터 위치 또는 리전

    요청을 보내려면 다음 옵션 중 하나를 사용하세요.

    curl (Linux, macOS 또는 Cloud Shell)

    다음 명령어를 실행합니다.

       curl -X GET \
             -H "Authorization: Bearer $(gcloud auth print-access-token)" \
             -H "Content-Type: application/json; charset=utf-8" \
             -d @request.json \
             "https://alloydb.googleapis.com/v1beta/projects/PROJECT_ID/locations/REGION/clusters/CLUSTER_ID"
       

    PowerShell (Windows)

    다음 명령어를 실행합니다.

       $cred = gcloud auth print-access-token
       $headers = @{ "Authorization" = "Bearer $cred" }
    
       Invoke-WebRequest `
         -Method GET `
         -Headers $headers `
         -Uri "https://alloydb.googleapis.com/v1beta/projects/PROJECT_ID/locations/REGION/clusters/CLUSTER_ID| Select-Object -Expand Content
       
  2. 다음 표에서 대상 데이터베이스 주 버전을 식별합니다. AlloyDB가 지원하는 데이터베이스 버전의 전체 목록은 데이터베이스 버전 및 버전 정책을 참고하세요.

    소스 주요 버전 지원되는 타겟 주요 버전
    POSTGRES_14
    • POSTGRES_15
    • POSTGRES_16
    POSTGRES_15
    • POSTGRES_16
  3. 각 데이터베이스 주 버전에 제공된 기능을 검토합니다.

  4. 해결해야 하는 비호환성을 식별합니다. 새로운 주 버전에는 애플리케이션 코드, 스키마, 데이터베이스 설정을 수정해야 할 수 있는 호환되지 않는 변경사항이 포함될 수 있습니다.

  5. 프로덕션 클러스터에서 주 버전 업그레이드를 시작하기 전에 클러스터를 클론하고 클론된 클러스터에서 주 버전 업그레이드를 테스트하는 것이 좋습니다.

    업그레이드가 성공적으로 완료되는지 확인하는 것 외에도 업그레이드된 클러스터에서 애플리케이션이 예상한 대로 작동하는지 확인하는 테스트를 실행합니다.

주 버전 업그레이드를 위해 클러스터 준비

데이터베이스에 연결해야 하는 단계를 완료하려면 AlloyDB 스튜디오, psql 또는 기타 연결 방법을 사용하세요.

  1. 리전 간 복제본을 삭제하거나 승격합니다. 데이터베이스 인플레이스 주요 버전 업그레이드는 리전 간 복제본을 지원하지 않습니다. 자세한 내용은 지역 간 복제를 참고하세요.
  2. postgrestemplate1 데이터베이스의 인코딩 및 언어 설정이 template0 데이터베이스와 동일한지 확인합니다.

    다음 명령어를 실행합니다.

    SELECT pg_encoding_to_char(encoding), datcollate, datctype
    FROM pg_database
    WHERE datname IN ('postgres', 'template1', 'template0');
    

    postgres 또는 template1 데이터베이스의 값이 template0 데이터베이스의 값과 다르면 업그레이드가 실패합니다. 이 문제를 해결하려면 다음 단계를 따르세요.

    1. template0이 아닌 다른 데이터베이스를 덤프합니다. 자세한 내용은 데이터 내보내기를 참고하세요.

    2. DROP DATABASE <database_name>;를 실행하여 데이터베이스를 삭제합니다.

    3. 다음을 실행하여 template0 데이터베이스와 동일한 인코딩 및 언어 설정으로 데이터베이스를 다시 만듭니다.

      CREATE DATABASE <database_name>
      ENCODING = '<template0_encoding>'
      LC_COLLATE = '<template0_datcollate>'
      LC_CTYPE = '<template0_datctype>';
      
    4. 데이터를 새로고침합니다. 자세한 내용은 데이터 가져오기를 참고하세요.

  3. AlloyDB 클러스터가 논리적 복제 소스인 경우 다운스트림 구독을 사용 중지하고 모든 논리적 복제 슬롯을 삭제합니다. 업그레이드 후 구독을 다시 사용 설정하고 논리적 복제 슬롯을 다시 만들 수 있습니다. AlloyDB 인스턴스가 논리 복제 대상일 뿐인 경우 이 단계는 필요하지 않습니다. 구독을 사용 중지하고 논리적 복제 슬롯을 삭제하려면 다음 단계를 따르세요.

    1. 구독자 또는 다운스트림 복제 타겟에서 각 다운스트림 구독을 사용 중지합니다. 업그레이드 중인 AlloyDB 인스턴스에서 다운스트림 구독을 사용 중지하지 마세요.

      • pglogical를 사용하는 경우 다음 명령어를 실행합니다.

        SELECT * FROM
        pglogical.alter_subscription_disable(subscription_name, immediate);
        

        쿼리의 subscription_name을 기존 구독 이름으로 바꿉니다. 구독을 즉시 사용 중지해야 하는 경우 immediate 매개변수의 값을 true로 설정합니다. 기본적으로 값은 false이며 현재 트랜잭션이 종료된 후에만 구독이 중지됩니다.

        예를 들면 다음과 같습니다.

        postgres=> SELECT * FROM pglogical.alter_subscription_disable('test_sub',true);
        alter_subscription_disable
        ----------------------------
        t
        (1 row)
        
      • pglogical 이외의 확장 프로그램을 사용하는 경우 다음 명령어를 실행합니다.

        ALTER SUBSCRIPTION <subscription_name> DISABLE;
        
    2. 다음 명령어를 실행하여 AlloyDB 기본 인스턴스의 모든 논리적 복제 슬롯을 삭제합니다.

      SELECT pg_drop_replication_slot(slot_name) FROM pg_replication_slots WHERE slot_type = 'logical';
      
  4. PostgreSQL 확장 프로그램을 관리합니다. 자세한 내용은 데이터베이스 확장 프로그램 구성을 참고하세요.

    업그레이드 전 검사는 확장 프로그램 비호환성을 감지하고 추천 작업과 함께 이러한 위반사항을 로그에 표시합니다. 자세한 내용은 업그레이드 전 검사 실패 보기를 참고하세요.

    다음을 수행해야 할 수 있습니다.

    1. 대상 버전에서 더 이상 지원되지 않는 모든 확장 프로그램을 삭제합니다.
    2. PostGIS 및 관련 확장 프로그램(address_standardizer, address_standardizer_data_us, postgis_raster, postgis_sfcgal, postgis_tiger_geocoder, postgis_topology)을 대상 PostgreSQL 버전에서 지원되는 버전으로 업그레이드합니다. 자세한 내용은 PostGIS 확장 프로그램을 참고하세요. 다음 표에는 각 PostgreSQL 주요 버전에서 지원되는 최소 PostGIS 확장 프로그램 버전이 나와 있습니다.

      PostgreSQL 버전 지원되는 PostGIS 최소 버전
      PG14 3.1
      PG15 3.2
      PG16 3.4

      예를 들어 PostGIS 버전이 3.1.x이고 POSTGRES 14에서 POSTGRES 16으로 업그레이드하려면 다음 명령어를 사용하여 PostGIS 확장 프로그램을 업그레이드합니다.

      ALTER EXTENSION postgis UPDATE TO '3.4.0';
      SELECT PostGIS_Version();
      
  5. 다음 쿼리를 실행하고 각 데이터베이스의 datallowconn 필드를 확인하여 template0를 제외한 각 데이터베이스에 연결이 허용되는지 확인합니다.

    SELECT datname,datallowconn from pg_database;
    

    datallowconn 필드의 t 값은 연결이 허용됨을 의미합니다. f 값은 연결을 설정할 수 없음을 나타냅니다. template0 데이터베이스는 연결을 허용해서는 안 됩니다.

    데이터베이스 연결을 허용하려면 다음 명령어를 실행합니다.

    ALTER DATABASE <database> WITH ALLOW_CONNECTIONS = true;
    

클러스터 메이저 버전 인플레이스 업그레이드

데이터베이스 인플레이스 주 버전 업그레이드는 데이터베이스 크기, 스키마 크기, 클러스터의 읽기 풀 인스턴스 수와 같은 요인에 따라 완료하는 데 40분에서 48시간이 걸릴 수 있습니다. 기본 인스턴스 다운타임은 일반적으로 20분~1시간이며 주로 데이터베이스 스키마에 따라 달라집니다.

인플레이스 주 버전 업그레이드 요청을 실행하면 AlloyDB가 먼저 업그레이드 전 검사를 실행합니다. AlloyDB에서 클러스터가 주 버전 업그레이드 준비가 되지 않았다고 판단하면 요청이 실패합니다. 자세한 내용은 주 버전 인플레이스 업그레이드 문제 해결을 참고하세요.

데이터베이스 주 버전을 인플레이스 업그레이드하려면 다음 단계를 따르세요.

콘솔

  1. Google Cloud 콘솔에서 클러스터 페이지로 이동합니다.

    클러스터로 이동

  2. 목록에서 클러스터를 선택합니다. 개요 페이지가 나타납니다.

  3. 업그레이드를 클릭하여 데이터베이스 주 버전 업그레이드 프로세스를 시작합니다.

  4. 데이터베이스 버전 선택 단계에서 사용 가능한 데이터베이스 주 버전 중 하나를 대상 주 버전으로 선택합니다.

  5. 계속을 클릭합니다.

  6. 클러스터 업그레이드 단계의 클러스터 ID 필드에 클러스터의 이름을 입력합니다.

  7. 업그레이드 시작을 클릭합니다. 업그레이드 상태를 확인할 수 있는 업그레이드 상태 단계로 이동합니다. 자세한 내용은 주요 데이터베이스 버전 업그레이드 모니터링을 참고하세요.

gcloud

다음 명령어를 실행하여 인플레이스 주 버전 업그레이드를 시작합니다.

gcloud alloydb beta clusters upgrade CLUSTER_ID --region=REGION --version=DATABASE_VERSION --async

다음은 명령어의 예입니다.

gcloud alloydb beta clusters upgrade my-cluster --region=us-central1 --version=POSTGRES_16 --async

REST v1beta

다음 명령어를 실행하여 인플레이스 주 버전 업그레이드를 시작합니다.

PATCH https://alloydb.googleapis.com/v1beta/projects/PROJECT_ID/locations/REGION/clusters/CLUSTER_ID:upgrade

JSON 요청 본문:

{
  "version": "DATABASE_VERSION"
}

대상 데이터베이스 주 버전의 열거형으로 바꿉니다. 현재 버전보다 나중이어야 합니다.

샘플 JSON 요청 본문:

{
"version": "POSTGRES_16"
}

클러스터 메이저 버전 업그레이드 모니터링

인플레이스 주요 데이터베이스 버전 업그레이드가 시작되면 Google Cloud 콘솔, gcloud CLI 또는 REST API를 사용하여 업그레이드 상태를 모니터링할 수 있습니다.

콘솔

Google Cloud 콘솔에서 업그레이드 상태를 확인하려면 다음 단계를 따르세요.

  1. Google Cloud 콘솔에서 클러스터 페이지로 이동합니다.

    클러스터로 이동

  2. 업그레이드 중인 클러스터를 선택합니다. 개요 페이지가 나타납니다.

  3. 개요 페이지를 엽니다.

  4. 업그레이드 상태를 클릭합니다. 업그레이드 상태 페이지가 표시되며 여기에서 업그레이드 상태를 확인할 수 있습니다.

gcloud

gcloud CLI에서 업그레이드 상태를 확인하려면 다음 단계를 따르세요.

  1. 다음 명령어를 실행하여 업그레이드 작업 ID를 가져옵니다. 명령어를 실행하기 전에 CLUSTER_ID 변수를 클러스터 이름으로 바꿉니다.

    gcloud alloydb operations list --cluster=CLUSTER_ID --region=REGION_ID --filter=metadata.verb:upgrade

    주요 버전 업그레이드를 트리거하는 데 사용되는 gcloud CLI 호출입니다. alloydb beta clusters upgrade: 작업 ID를 동기식 응답으로 반환합니다. 또는 gcloud alloydb operations list 명령어를 --cluster 플래그와 함께 사용합니다.

    다음은 명령어의 예입니다.

    gcloud alloydb operations list --cluster=my-cluster --region=us-central1 --filter=metadata.verb:upgrade
  2. 다음 명령어를 실행하여 업그레이드 상태를 모니터링합니다.

    gcloud alloydb operations describe OPERATION_ID
    --region=REGION
    https://cloud.google.com/sdk/gcloud/reference/alloydb/operations/describe

REST v1beta

REST API에서 업그레이드 상태를 확인하려면 다음 단계를 따르세요.

  1. 업그레이드 작업 ID를 가져옵니다.

    operations.list 메서드와 함께 다음 GET 요청을 사용하여 모든 업그레이드 작업을 나열하고 대상 클러스터에 해당하는 작업을 찾습니다.

    GET https://alloydb.googleapis.com/v1beta/projects/PROJECT_ID/locations/REGION/operations/filter=metadata.verb:upgrade

    REST API 호출은 작업 ID를 동기식 응답으로 반환합니다.

  2. 업그레이드 상태를 모니터링합니다.

    operations.get 메서드와 함께 GET 요청을 사용합니다.

      GET https://alloydb.googleapis.com/v1beta/projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID

    다음을 바꿉니다.

    • PROJECT_ID: 프로젝트 ID
    • REGION: 클러스터 위치 또는 리전
    • OPERATION_ID: 이전 단계에서 가져온 업그레이드 작업 ID입니다.

    다음은 작업이 진행 중일 때의 응답 예시입니다.

    {
    "name": "projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID",
    "metadata": {
    "@type": "type.googleapis.com/google.cloud.alloydb.v1.OperationMetadata",
    "createTime": "2024-09-16T23:17:39.727319438Z",
    "target": "projects/PROJECT_ID/locations/REGION/clusters/CLUSTER_ID",
    "verb": "upgrade",
    "requestedCancellation": false,
    "apiVersion": "v1",
    "upgradeClusterStatus": {
       "state": "IN_PROGRESS",
       "cancellable": true,
       "stages": [
        {
          "stage": "ALLOYDB_PRECHECK",
          "state": "IN_PROGRESS"
        },
        {
          "stage": "PG_UPGRADE_CHECK",
          "state": "IN_PROGRESS"
        },
        {
          "stage": "PREPARE_FOR_UPGRADE",
          "state": "NOT_STARTED"
        },
        {
          "stage": "PRIMARY_INSTANCE_UPGRADE",
          "state": "NOT_STARTED"
        },
        {
          "stage": "CLEANUP",
          "state": "NOT_STARTED"
        }
       ]
     }
    },
    "done":false
    }
    

    다음은 작업이 완료된 샘플 응답입니다.

    {
    "operations": [
    {
     "metadata": {
     "@type": "type.googleapis.com/google.cloud.alloydb.v1betaalpha.OperationMetadata",
     "createTime": "2024-09-16T21:52:17.303861317Z",
     "endTime": "2024-09-16T22:29:13.947527949Z",
     "target": "projects/PROJECT_ID/locations/REGION/clusters/CLUSTER_ID",
     "verb": "upgrade",
     "requestedCancellation": false,
     "apiVersion": "v1beta",
     "upgradeClusterStatus": {
      "state": "SUCCESS",
      "stages": [
        {
          "stage": "ALLOYDB_PRECHECK",
          "state": "SUCCESS"
        },
        {
          "stage": "PG_UPGRADE_CHECK",
          "state": "SUCCESS"
        },
        {
          "stage": "PREPARE_FOR_UPGRADE",
          "state": "SUCCESS"
        },
        {
          "stage": "PRIMARY_INSTANCE_UPGRADE",
          "state": "SUCCESS"
        },
        {
          "stage": "CLEANUP",
          "state": SUCCESS"
        }
       ]
     }
    },
    "response": {
         …
    },
    "name":  "projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID",
    "done": true
    }
    ]
    }
    

    response 구조에 관한 자세한 내용은 업그레이드 작업 응답을 참고하세요.

업그레이드 작업 응답

UpgradeCluster 작업 응답에는 다음이 포함됩니다.

  • status: 전체 업그레이드 작업의 상태입니다. 가능한 값은 SUCCESS, FAILED, PARTIAL_SUCCESS.입니다.
  • message: 업그레이드 작업 결과에 관한 간단한 요약을 제공합니다.
  • clusterUpgradeDetails: 업그레이드 중인 클러스터의 업그레이드 세부정보입니다. 이 필드는 배열입니다. AlloyDB는 단일 클러스터 업그레이드만 허용하므로 항목이 하나만 있어야 합니다.
    • name: 클러스터의 정규화된 이름입니다.
    • upgradeStatus: 클러스터 업그레이드 상태입니다. 가능한 값은 SUCCESS, FAILED, PARTIAL_SUCCESS입니다. PARTIAL_SUCCESS은 하나 이상의 읽기 풀 인스턴스를 업그레이드할 수 없음을 의미합니다.
    • clusterType: 클러스터 유형입니다. AlloyDB에서는 단일 PRIMARY 클러스터만 업그레이드할 수 있습니다. 이 유형은 항상 PRIMARY이어야 합니다.
    • databaseVersion: 클러스터의 현재 데이터베이스 버전입니다.
    • stageInfo: 핵심 업그레이드 단계에 관한 정보입니다.
      • status: SUCCESS 또는 FAILED
      • logs_url: 스테이지에서 생성된 로그 링크입니다. 로그를 생성하지 않는 단계의 경우 비워 둡니다.
    • instanceUpgradeDetails: 클러스터의 모든 인스턴스에 대한 업그레이드 정보입니다.
      • name: 인스턴스의 정규화된 이름
      • upgradeStatus: SUCCESS 또는 FAILED
      • instanceType: PRIMARY 또는 READ_POOL

다음은 샘플 업그레이드 작업 응답입니다.

"response": {
  "@type": "type.googleapis.com/google.cloud.alloydb.v1alpha.UpgradeClusterResponse",
  "status": "SUCCESS",
  "message": "Cluster upgraded successfully.",
  "clusterUpgradeDetails": [
    {
      "name": "projects/1234/locations/us-central1/clusters/abc",
      "upgradeStatus": "SUCCESS",
      "clusterType": "PRIMARY",
      "databaseVersion": "POSTGRES_16",
      "stageInfo": [
        {
          "stage": "ALLOYDB_PRECHECK",
          "status": "SUCCESS",
          "logsUrl": "https://console.cloud.google.com/logs/query..."
        },
        {
          "stage": "PG_UPGRADE_CHECK",
          "status": "SUCCESS",
          "logsUrl": "https://console.cloud.google.com/logs/query..."
        },
        {
          "stage": "PRIMARY_INSTANCE_UPGRADE",
          "status": "SUCCESS",
          "logsUrl": "https://console.cloud.google.com/logs/query..."
        },
        {
          "stage": "READ_POOL_INSTANCES_UPGRADE",
          "status": "SUCCESS",
        }
      ],
      "instanceUpgradeDetails": [
        {
          "name": "projects/1234/locations/us-central1/clusters/abc/instances/primary",
          "upgradeStatus": "SUCCESS",
          "instanceType": "PRIMARY",
        },
        {
          "name": "projects/1234/locations/us-central1/clusters/abc/instances/read1",
          "upgradeStatus": "SUCCESS",
          "instanceType": "READ_POOL",
        },
        {
          "name": "projects/1234/locations/us-central1/clusters/abc/instances/read2",
          "upgradeStatus": "SUCCESS",
          "instanceType": "READ_POOL",
        }
      ]
    }
  ]
}

업그레이드 로그 보기

AlloyDB는 모든 업그레이드 로그를 postgres_upgrade 로그 이름에 게시합니다.

업그레이드 관련 로그를 보려면 다음 단계를 따르세요.

  1. Google Cloud 콘솔에서 로그 탐색기 페이지로 이동합니다.

    로그 탐색기로 이동

    검색창을 사용하여 이 페이지를 찾은 경우 부제목이 Logging인 결과를 선택합니다.

  2. 로그 이름으로 alloydb.googleapis.com/postgres_upgrade를 선택합니다. 이는 쿼리 "logName="projects/PROJECT_ID/logs/alloydb.googleapis.com%2Fpostgres_upgrade"로 변환됩니다.

  3. 다음 라벨을 사용하여 로그를 필터링합니다.

    라벨 설명

    LOG_TYPE

    로그를 생성한 업그레이드 단계입니다. 가능한 값은 ALLOYDB_PRECHECK, PG_UPGRADE_CHECK, PG_UPGRADE입니다.

    OPERATION_NAME

    업그레이드 작업의 전체 작업 이름입니다.

    FILE_NAME

    pg_upgrade_checkpg_upgrade 로그에 대해서만 채워지며 pg_upgrade 유틸리티에서 생성된 로그 파일에 해당합니다.

다음은 특정 작업의 AlloyDB 사전 확인 업그레이드 로그를 반환하는 샘플 쿼리입니다.

logName="projects/project1234/logs/alloydb.googleapis.com%2Fpostgres_upgrade"
labels.LOG_TYPE="ALLOYDB_PRECHECK"
labels.OPERATION_NAME="projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID"

업그레이드 검사에 관한 자세한 내용은 데이터베이스 인플레이스 주 버전 업그레이드 개요를 참고하세요.

클러스터의 업그레이드 로그 보기

작업 ID를 모르고 작업이 만료된 경우 클러스터의 업그레이드 로그를 보려면 다음 단계를 따르세요.

  1. 클러스터의 AlloyDB 사전 확인 로그를 쿼리합니다.

    logName="projects/PROJECT_ID/logs/alloydb.googleapis.com%2Fpostgres_upgrade"
    labels.LOG_TYPE="ALLOYDB_PRECHECK"
    resource.labels.cluster_id=CLUSTER_ID
    
  2. OPERATION_NAME 로그 라벨에서 Operation_ID를 찾습니다.

    다음 예에서 OPERATION_NAMEOperation_IDoperation-1728225968201-623cff6ed1e02-e34b7191-3cd92013입니다.

    labels.OPERATION_NAME="projects/myproject/locations/us-central1/operations/operation-1728225968201-623cff6ed1e02-e34b7191-3cd92013"
    
  3. 특정 작업에 대한 모든 postgres_upgrade 로그를 쿼리합니다.

    logName="projects/production-1/logs/alloydb.googleapis.com%2Fpostgres_upgrade"
    labels.OPERATION_NAME="operation-1728225968201-623cff6ed1e02-e34b7191-3cd92013"
    

데이터베이스 인플레이스 주 버전 업그레이드 취소

Google Cloud 콘솔, gcloud CLI 또는 REST API에서 진행 중인 주요 버전 업그레이드 작업을 취소할 수 있습니다.

작업 ID 찾기

gcloud CLI 또는 REST API를 사용하여 메인 버전 업그레이드 작업을 취소하려면 작업 ID가 필요합니다. AlloyDB가 취소할 작업을 알 수 있도록 gcloud CLI 또는 REST API 명령어로 이 ID를 지정해야 합니다.

기본 인스턴스 업그레이드가 특정 지점에 도달한 후에는 업그레이드를 취소할 수 없습니다.

인플레이스 주 버전 업그레이드를 시작하면 작업 ID가 응답의 name 필드에 반환됩니다. 응답 예시를 참고하세요.

AlloyDB 클러스터에서 operations.list 호출을 수행하여 작업 ID를 찾을 수도 있습니다.

업그레이드 취소

진행 중인 주요 버전 업그레이드를 취소하려면 다음 단계를 따르세요.

콘솔

  1. Google Cloud 콘솔에서 클러스터 페이지로 이동합니다.

    클러스터로 이동

  2. 목록에서 클러스터를 선택합니다. 개요 페이지가 나타납니다.

  3. 업그레이드 상태를 클릭합니다.

  4. 취소를 클릭합니다. 업그레이드를 취소할 수 없는 경우 이 버튼이 비활성화됩니다.

gcloud

gcloud alloydb operations cancel 명령어를 사용하여 작업을 취소합니다.

gcloud alloydb operations cancel OPERATION_ID

OPERATION_ID 변수를 작업 ID로 바꿉니다.

UpgradeClusterStatuscancellablegcloud alloydb operations cancel 명령어의 출력에서 false이면 AlloyDB는 취소 요청을 무시하고 업그레이드를 계속합니다. 이 경우 API는 오류를 발생시키지 않고 빈 응답을 반환합니다. 업그레이드 상태에 관한 자세한 내용은 클러스터 주요 버전 업그레이드 모니터링을 참고하세요.

REST v1beta

다음 명령어를 실행합니다.

POST https://alloydb.googleapis.com/v1beta/projects/PROJECT_ID/operations/OPERATION_ID:cancel

요청 데이터를 사용하기 전에 다음을 바꿉니다.

  • PROJECT_ID: 프로젝트 ID입니다.
  • OPERATION_ID: 가져오기 또는 내보내기 작업의 ID입니다.

UpgradeClusterStatuscancellablefalse이면 업그레이드를 취소할 수 없습니다.

요청을 보내려면 다음 옵션 중 하나를 사용하세요.

curl (Linux, macOS, Cloud Shell)

다음 명령어를 실행합니다.

       curl -X POST \
             -H "Authorization: Bearer $(gcloud auth print-access-token)" \
             -H "Content-Type: application/json; charset=utf-8" \
             -d "" \
            "https://alloydb.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID/cancel"
  

PowerShell (Windows)

다음 명령어를 실행합니다.

       $cred = gcloud auth print-access-token
       $headers = @{ "Authorization" = "Bearer $cred" }

       Invoke-WebRequest `
         -Method POST `
         -Headers $headers `
         -Uri "https://alloydb.googleapis.com/v1beta/projects/PROJECT_ID/operations/OPERATION_ID/cancel"| Select-Object -Expand Content
    

다음과 비슷한 JSON 응답이 표시됩니다.

응답

이 REST API 호출은 응답을 반환하지 않습니다.

인플레이스 주 버전 업그레이드 완료

메인 버전 업그레이드를 완료하려면 AlloyDB Studio, psql 또는 기타 연결 방법을 사용하여 AlloyDB 인스턴스에 연결합니다.

AlloyDB 이외의 시스템을 사용하는 경우 시스템 문서에서 연결 안내를 확인하세요.

클러스터를 업그레이드한 후 다음 단계에 따라 업그레이드를 완료합니다.

  1. 이전에 pglogical를 사용 중지했다면 pglogical 복제를 다시 사용 설정합니다. pglogical 복제를 사용 설정하면 필요한 복제 슬롯이 자동으로 생성됩니다.

    1. 다음 명령어를 사용하여 대상 복제본에서 pglogical 구독을 삭제합니다.

      select pglogical.drop_subscription(subscription_name name);
      

      name을 기존 구독의 이름으로 바꿉니다. 예를 들면 다음과 같습니다.

      postgres=> select pglogical.drop_subscription(subscription_name:= 'test_sub');
      -[ RECORD 1 ]-----+--
      drop_subscription |1
      
    1. AlloyDB 기본 인스턴스에 다음 연결 정보를 제공하여 대상 또는 복제본에 pglogical 구독을 다시 만듭니다.

      SELECT pglogical.create_subscription(
       subscription_name :='test_sub',<br>
       provider_dsn := 'host=primary-ip port=5432 dbname=postgres user=replication_user password=replicapassword'
      );
      
    2. 다음 명령어를 사용하여 구독 상태를 확인합니다.

      SELECT * FROM pglogical.show_subscription_status('test_sub');
      
    3. 쓰기 트랜잭션을 실행하고 변경사항이 대상에 표시되는지 확인하여 복제를 테스트합니다.

  1. 데이터베이스 통계를 새로고침합니다.

    업그레이드가 완료되면 기본 클러스터에서 ANALYZE를 실행하여 시스템 통계를 업데이트합니다. 정확한 통계는 PostgreSQL 쿼리 플래너가 쿼리를 최적의 방식으로 처리할 수 있게 해줍니다. 통계가 없으면 쿼리 계획이 부정확해져 성능이 저하되고 메모리가 과도하게 사용될 수 있습니다.

  2. 수락 테스트를 실행하여 업그레이드된 시스템이 예상대로 작동하는지 확인합니다.

  3. Google Cloud 콘솔의 클러스터 개요 페이지에 업그레이드된 데이터베이스 인플레이스 주 버전이 표시되는지 확인합니다.

이전 주 버전으로 복원

업그레이드된 데이터베이스 시스템이 예상한 대로 작동하지 않으면 업그레이드 전 상태로 되돌려야 할 수 있습니다. 업그레이드 전 백업(AlloyDB에서 업그레이드 프로세스 중에 자동으로 생성한 백업 또는 기존 업그레이드 전 백업)에서 복원하여 업그레이드 전 상태로 새 클러스터를 만들면 됩니다.

업그레이드 전 상태로 복원하려면 다음 단계를 따르세요.

  1. 복원할 업그레이드 전 백업을 식별합니다. 업그레이드 프로세스 중에 AlloyDB는 pre-upgrade-bkp 접두사가 있는 업그레이드 전 백업을 자동으로 만듭니다. 자세한 내용은 백업 목록 보기를 참고하세요.

  2. 업그레이드 전 백업에서 복원을 시작하면 이전 PostgreSQL 버전으로 새 클러스터가 생성됩니다. 자세한 내용은 저장된 백업에서 클러스터 복원을 참고하세요.

  3. 애플리케이션을 연결합니다. 복원된 클러스터 및 읽기 복제본에 관한 세부정보로 애플리케이션을 업데이트합니다. 복원된 클러스터에서 트래픽 제공을 재개할 수 있습니다.

업그레이드 전 시점으로 point-in-time recovery를 수행할 수도 있습니다. 자세한 내용은 PITR (point-in-time recovery) 사용을 참고하세요.

제한사항

다음 제한사항은 AlloyDB의 인플레이스(In-Place) 주 버전 업그레이드에 영향을 줍니다.

  • 보조 클러스터에서는 인플레이스 주 버전 업그레이드를 수행할 수 없습니다.
  • 1,000개가 넘는 데이터베이스가 있는 인스턴스를 한 버전에서 다른 버전으로 업그레이드하는 경우 시간이 오래 걸리고 업그레이드가 시간 초과될 수 있습니다.
  • AlloyDB는 pg_largeobject_metadata를 사용하는 클러스터의 업그레이드를 지원하지 않습니다. select count(*) from pg_largeobject_metadata;이 0이 아니면 업그레이드가 실패합니다.
  • 특히 객체 수가 적은 대규모 데이터베이스의 경우 업그레이드별 백업 또는 업그레이드 후 백업이 완료되기 전에 인플레이스 주 버전 업그레이드 작업이 완료될 수 있습니다.
  • 업그레이드된 인스턴스에서 쓰기가 다시 시작되는 시점과 업그레이드 후 백업이 생성되는 시점 사이에 약간의 지연이 발생할 수 있습니다. 즉, 업그레이드 후 백업 콘텐츠가 주 버전 업그레이드 전의 데이터베이스 콘텐츠와 일치하지 않을 수 있습니다.
  • 인플레이스 주요 버전 업그레이드가 실패하더라도 업그레이드 전 백업이 계속 생성될 수 있습니다.
  • 자동 업그레이드 백업은 연속적이므로 연속 백업 및 복구 최대 보관 기간에 도달할 때까지 삭제할 수 없습니다. 최대 보관 기간에 도달하면 백업이 가비지 컬렉션됩니다. 또는 gcloud CLI를 사용하여 백업을 수동으로 삭제할 수도 있습니다. 자세한 내용은 백업 삭제 시 제한사항을 참고하세요.

다음 단계