이 페이지에서는 PostgreSQL용 AlloyDB 클러스터의 데이터베이스 인플레이스 주 버전 업그레이드를 실행하는 방법을 설명합니다. 데이터베이스 인플레이스 주 버전 업그레이드 사용 사례, 워크플로, 자동 백업에 대해 알아보려면 데이터베이스 인플레이스 주 버전 업그레이드 개요를 참고하세요.
주요 데이터베이스 버전 업그레이드 계획
다음 단계에 따라 주요 데이터베이스 버전 업그레이드를 계획하세요.
현재 데이터베이스 주 버전을 찾습니다.
콘솔
Google Cloud 콘솔에서 클러스터 페이지로 이동합니다.
목록에서 클러스터를 선택합니다. 개요 페이지가 나타납니다.
버전 필드에서 데이터베이스 주 버전을 찾습니다.
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
다음 표에서 대상 데이터베이스 주 버전을 식별합니다. AlloyDB가 지원하는 데이터베이스 버전의 전체 목록은 데이터베이스 버전 및 버전 정책을 참고하세요.
소스 주요 버전 지원되는 타겟 주요 버전 POSTGRES_14 - POSTGRES_15
- POSTGRES_16
POSTGRES_15 - POSTGRES_16
각 데이터베이스 주 버전에 제공된 기능을 검토합니다.
해결해야 하는 비호환성을 식별합니다. 새로운 주 버전에는 애플리케이션 코드, 스키마, 데이터베이스 설정을 수정해야 할 수 있는 호환되지 않는 변경사항이 포함될 수 있습니다.
프로덕션 클러스터에서 주 버전 업그레이드를 시작하기 전에 클러스터를 클론하고 클론된 클러스터에서 주 버전 업그레이드를 테스트하는 것이 좋습니다.
업그레이드가 성공적으로 완료되는지 확인하는 것 외에도 업그레이드된 클러스터에서 애플리케이션이 예상한 대로 작동하는지 확인하는 테스트를 실행합니다.
주 버전 업그레이드를 위해 클러스터 준비
데이터베이스에 연결해야 하는 단계를 완료하려면 AlloyDB 스튜디오, psql 또는 기타 연결 방법을 사용하세요.
- 리전 간 복제본을 삭제하거나 승격합니다. 데이터베이스 인플레이스 주요 버전 업그레이드는 리전 간 복제본을 지원하지 않습니다. 자세한 내용은 지역 간 복제를 참고하세요.
postgres
및template1
데이터베이스의 인코딩 및 언어 설정이template0
데이터베이스와 동일한지 확인합니다.다음 명령어를 실행합니다.
SELECT pg_encoding_to_char(encoding), datcollate, datctype FROM pg_database WHERE datname IN ('postgres', 'template1', 'template0');
postgres
또는template1
데이터베이스의 값이template0
데이터베이스의 값과 다르면 업그레이드가 실패합니다. 이 문제를 해결하려면 다음 단계를 따르세요.template0이 아닌 다른 데이터베이스를 덤프합니다. 자세한 내용은 데이터 내보내기를 참고하세요.
DROP DATABASE <database_name>;
를 실행하여 데이터베이스를 삭제합니다.다음을 실행하여
template0
데이터베이스와 동일한 인코딩 및 언어 설정으로 데이터베이스를 다시 만듭니다.CREATE DATABASE <database_name> ENCODING = '<template0_encoding>' LC_COLLATE = '<template0_datcollate>' LC_CTYPE = '<template0_datctype>';
데이터를 새로고침합니다. 자세한 내용은 데이터 가져오기를 참고하세요.
AlloyDB 클러스터가 논리적 복제 소스인 경우 다운스트림 구독을 사용 중지하고 모든 논리적 복제 슬롯을 삭제합니다. 업그레이드 후 구독을 다시 사용 설정하고 논리적 복제 슬롯을 다시 만들 수 있습니다. AlloyDB 인스턴스가 논리 복제 대상일 뿐인 경우 이 단계는 필요하지 않습니다. 구독을 사용 중지하고 논리적 복제 슬롯을 삭제하려면 다음 단계를 따르세요.
구독자 또는 다운스트림 복제 타겟에서 각 다운스트림 구독을 사용 중지합니다. 업그레이드 중인 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;
다음 명령어를 실행하여 AlloyDB 기본 인스턴스의 모든 논리적 복제 슬롯을 삭제합니다.
SELECT pg_drop_replication_slot(slot_name) FROM pg_replication_slots WHERE slot_type = 'logical';
PostgreSQL 확장 프로그램을 관리합니다. 자세한 내용은 데이터베이스 확장 프로그램 구성을 참고하세요.
업그레이드 전 검사는 확장 프로그램 비호환성을 감지하고 추천 작업과 함께 이러한 위반사항을 로그에 표시합니다. 자세한 내용은 업그레이드 전 검사 실패 보기를 참고하세요.
다음을 수행해야 할 수 있습니다.
- 대상 버전에서 더 이상 지원되지 않는 모든 확장 프로그램을 삭제합니다.
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();
다음 쿼리를 실행하고 각 데이터베이스의
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에서 클러스터가 주 버전 업그레이드 준비가 되지 않았다고 판단하면 요청이 실패합니다. 자세한 내용은 주 버전 인플레이스 업그레이드 문제 해결을 참고하세요.
데이터베이스 주 버전을 인플레이스 업그레이드하려면 다음 단계를 따르세요.
콘솔
Google Cloud 콘솔에서 클러스터 페이지로 이동합니다.
목록에서 클러스터를 선택합니다. 개요 페이지가 나타납니다.
업그레이드를 클릭하여 데이터베이스 주 버전 업그레이드 프로세스를 시작합니다.
데이터베이스 버전 선택 단계에서 사용 가능한 데이터베이스 주 버전 중 하나를 대상 주 버전으로 선택합니다.
계속을 클릭합니다.
클러스터 업그레이드 단계의 클러스터 ID 필드에 클러스터의 이름을 입력합니다.
업그레이드 시작을 클릭합니다. 업그레이드 상태를 확인할 수 있는 업그레이드 상태 단계로 이동합니다. 자세한 내용은 주요 데이터베이스 버전 업그레이드 모니터링을 참고하세요.
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 콘솔에서 업그레이드 상태를 확인하려면 다음 단계를 따르세요.
Google Cloud 콘솔에서 클러스터 페이지로 이동합니다.
업그레이드 중인 클러스터를 선택합니다. 개요 페이지가 나타납니다.
개요 페이지를 엽니다.
업그레이드 상태를 클릭합니다. 업그레이드 상태 페이지가 표시되며 여기에서 업그레이드 상태를 확인할 수 있습니다.
gcloud
gcloud CLI에서 업그레이드 상태를 확인하려면 다음 단계를 따르세요.
다음 명령어를 실행하여 업그레이드 작업 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
다음 명령어를 실행하여 업그레이드 상태를 모니터링합니다.
gcloud alloydb operations describe OPERATION_ID --region=REGION https://cloud.google.com/sdk/gcloud/reference/alloydb/operations/describe
REST v1beta
REST API에서 업그레이드 상태를 확인하려면 다음 단계를 따르세요.
업그레이드 작업 ID를 가져옵니다.
operations.list
메서드와 함께 다음GET
요청을 사용하여 모든 업그레이드 작업을 나열하고 대상 클러스터에 해당하는 작업을 찾습니다.GET https://alloydb.googleapis.com/v1beta/projects/PROJECT_ID/locations/REGION/operations/filter=metadata.verb:upgrade
REST API 호출은 작업 ID를 동기식 응답으로 반환합니다.
업그레이드 상태를 모니터링합니다.
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
로그 이름에 게시합니다.
업그레이드 관련 로그를 보려면 다음 단계를 따르세요.
-
Google Cloud 콘솔에서 로그 탐색기 페이지로 이동합니다.
검색창을 사용하여 이 페이지를 찾은 경우 부제목이 Logging인 결과를 선택합니다.
로그 이름으로
alloydb.googleapis.com/postgres_upgrade
를 선택합니다. 이는 쿼리"logName="projects/PROJECT_ID/logs/alloydb.googleapis.com%2Fpostgres_upgrade"
로 변환됩니다.다음 라벨을 사용하여 로그를 필터링합니다.
라벨 설명 LOG_TYPE
로그를 생성한 업그레이드 단계입니다. 가능한 값은 ALLOYDB_PRECHECK
,PG_UPGRADE_CHECK
,PG_UPGRADE
입니다.OPERATION_NAME
업그레이드 작업의 전체 작업 이름입니다. FILE_NAME
pg_upgrade_check
및pg_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를 모르고 작업이 만료된 경우 클러스터의 업그레이드 로그를 보려면 다음 단계를 따르세요.
클러스터의 AlloyDB 사전 확인 로그를 쿼리합니다.
logName="projects/PROJECT_ID/logs/alloydb.googleapis.com%2Fpostgres_upgrade" labels.LOG_TYPE="ALLOYDB_PRECHECK" resource.labels.cluster_id=CLUSTER_ID
OPERATION_NAME
로그 라벨에서Operation_ID
를 찾습니다.다음 예에서
OPERATION_NAME
의Operation_ID
는operation-1728225968201-623cff6ed1e02-e34b7191-3cd92013
입니다.labels.OPERATION_NAME="projects/myproject/locations/us-central1/operations/operation-1728225968201-623cff6ed1e02-e34b7191-3cd92013"
특정 작업에 대한 모든
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를 찾을 수도 있습니다.
업그레이드 취소
진행 중인 주요 버전 업그레이드를 취소하려면 다음 단계를 따르세요.
콘솔
Google Cloud 콘솔에서 클러스터 페이지로 이동합니다.
목록에서 클러스터를 선택합니다. 개요 페이지가 나타납니다.
업그레이드 상태를 클릭합니다.
취소를 클릭합니다. 업그레이드를 취소할 수 없는 경우 이 버튼이 비활성화됩니다.
gcloud
gcloud alloydb operations cancel
명령어를 사용하여 작업을 취소합니다.
gcloud alloydb operations cancel OPERATION_ID
OPERATION_ID 변수를 작업 ID로 바꿉니다.
UpgradeClusterStatus
의 cancellable
가 gcloud 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입니다.
UpgradeClusterStatus
의 cancellable
가 false
이면 업그레이드를 취소할 수 없습니다.
요청을 보내려면 다음 옵션 중 하나를 사용하세요.
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 이외의 시스템을 사용하는 경우 시스템 문서에서 연결 안내를 확인하세요.
클러스터를 업그레이드한 후 다음 단계에 따라 업그레이드를 완료합니다.
이전에
pglogical
를 사용 중지했다면pglogical
복제를 다시 사용 설정합니다.pglogical
복제를 사용 설정하면 필요한 복제 슬롯이 자동으로 생성됩니다.다음 명령어를 사용하여 대상 복제본에서
pglogical
구독을 삭제합니다.select pglogical.drop_subscription(subscription_name name);
name
을 기존 구독의 이름으로 바꿉니다. 예를 들면 다음과 같습니다.postgres=> select pglogical.drop_subscription(subscription_name:= 'test_sub'); -[ RECORD 1 ]-----+-- drop_subscription |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' );
다음 명령어를 사용하여 구독 상태를 확인합니다.
SELECT * FROM pglogical.show_subscription_status('test_sub');
쓰기 트랜잭션을 실행하고 변경사항이 대상에 표시되는지 확인하여 복제를 테스트합니다.
데이터베이스 통계를 새로고침합니다.
업그레이드가 완료되면 기본 클러스터에서
ANALYZE
를 실행하여 시스템 통계를 업데이트합니다. 정확한 통계는 PostgreSQL 쿼리 플래너가 쿼리를 최적의 방식으로 처리할 수 있게 해줍니다. 통계가 없으면 쿼리 계획이 부정확해져 성능이 저하되고 메모리가 과도하게 사용될 수 있습니다.수락 테스트를 실행하여 업그레이드된 시스템이 예상대로 작동하는지 확인합니다.
Google Cloud 콘솔의 클러스터 개요 페이지에 업그레이드된 데이터베이스 인플레이스 주 버전이 표시되는지 확인합니다.
이전 주 버전으로 복원
업그레이드된 데이터베이스 시스템이 예상한 대로 작동하지 않으면 업그레이드 전 상태로 되돌려야 할 수 있습니다. 업그레이드 전 백업(AlloyDB에서 업그레이드 프로세스 중에 자동으로 생성한 백업 또는 기존 업그레이드 전 백업)에서 복원하여 업그레이드 전 상태로 새 클러스터를 만들면 됩니다.
업그레이드 전 상태로 복원하려면 다음 단계를 따르세요.
복원할 업그레이드 전 백업을 식별합니다. 업그레이드 프로세스 중에 AlloyDB는
pre-upgrade-bkp
접두사가 있는 업그레이드 전 백업을 자동으로 만듭니다. 자세한 내용은 백업 목록 보기를 참고하세요.업그레이드 전 백업에서 복원을 시작하면 이전 PostgreSQL 버전으로 새 클러스터가 생성됩니다. 자세한 내용은 저장된 백업에서 클러스터 복원을 참고하세요.
애플리케이션을 연결합니다. 복원된 클러스터 및 읽기 복제본에 관한 세부정보로 애플리케이션을 업데이트합니다. 복원된 클러스터에서 트래픽 제공을 재개할 수 있습니다.
업그레이드 전 시점으로 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를 사용하여 백업을 수동으로 삭제할 수도 있습니다. 자세한 내용은 백업 삭제 시 제한사항을 참고하세요.
다음 단계
- 데이터베이스 인플레이스 주 버전 업그레이드에 대해 자세히 알아보세요.
- 인플레이스 주 버전 업그레이드 문제 해결
- 데이터베이스 인플레이스 주 버전 업그레이드 오류에 대해 알아보세요.