인스턴스 스토리지 용량 축소

이 페이지에서는 스토리지 축소 기능을 사용하여 Cloud SQL 인스턴스의 스토리지 용량을 관리하는 방법을 보여줍니다.

시작하기 전에

  1. 기능의 제한사항을 검토합니다.

  2. gcloud CLI를 사용하는 경우 최신 버전의 Google Cloud SDK 및 gcloud CLI를 사용하고 있는지 확인합니다.

    • 최신 gcloud CLI 버전 설치
    • 현재 gcloud CLI 버전을 확인하려면 gcloud --version를 실행하세요.
    • gcloud CLI 버전을 업데이트하려면 gcloud components update를 실행합니다.
  3. 다음 IAM 권한을 가져옵니다.

    • cloudsql.instances.getDiskShrinkConfig
    • cloudsql.instances.performDiskShrink

    이러한 권한은 다음 역할 중 하나에서 사용할 수 있습니다. 역할을 할당할 때는 최소 권한의 원칙을 적용하는 것이 좋습니다.

    • Cloud SQL 관리자 (roles/cloudsql.admin)
    • Cloud SQL 편집자 (roles/cloudsql.editor)

    자세한 내용은 다음 리소스를 참조하세요.

인스턴스 준비

시작하기 전에 다음 요구사항을 완료하세요.

이 단계는 기본 인스턴스와 읽기 복제본에 동일하게 적용됩니다.

읽기 복제본을 업데이트하는 경우 먼저 기본 인스턴스의 용량을 줄인 다음 복제본의 크기를 줄여야 합니다.

  1. 관리하려는 인스턴스가 포함된 프로젝트의 프로젝트 ID를 가져옵니다.

  2. 인스턴스의 현재 상태를 확인하여 실행 중인지 확인합니다. 확인하는 한 가지 방법은 describe 명령어를 사용하는 것입니다.

      gcloud sql instances describe
    

    다음 상태를 반환합니다.

      RUNNABLE
    

    그렇지 않으면 인스턴스를 시작합니다.

  3. 현재 인스턴스의 백업을 만듭니다. 이렇게 하면 구성 중에 문제가 발생할 경우 나중에 인스턴스를 복원할 수 있습니다.

  4. PostgreSQL 인스턴스를 실행하는 경우 max_wal_size 플래그 값을 5128MB 미만으로 설정합니다. max_wal_size 값이 너무 크면 인스턴스 시작이 느려지고 작업이 실패할 수 있습니다.

  5. 아웃바운드 연결을 사용 설정하거나 아웃바운드 데이터 전송이 필요한 모든 확장 프로그램 또는 기능을 사용 중지합니다. 예를 들어 아웃바운드 연결은 이러한 확장 프로그램이나 기능을 사용하여 설정될 수 있으며 저장소 축소 작업을 실행하기 전에 사용 중지해야 합니다.

    • dblink 확장 프로그램
    • PL/proxy 확장 프로그램
    • pglogical 확장 프로그램
    • 외부 데이터 래퍼 (예: postgres_fdw, oracle_fdw, tds_fdw)
    • PostgreSQL 10 이상의 논리 복제

인스턴스의 스토리지 용량 축소

다음 단계는 기본 인스턴스와 읽기 복제본에 동일하게 적용됩니다.

  1. 인스턴스의 타겟 최소 스토리지 용량과 예상 작업 시간을 확인합니다. 이 정보는 스토리지 축소 작업을 계획하는 데 도움이 됩니다.

    gcloud

    gcloud sql instances get-storage-shrink-config 명령어를 실행합니다.

    gcloud sql instances get-storage-shrink-config INSTANCE_NAME
    

    다음을 바꿉니다.

    • INSTANCE_NAME: 기본 인스턴스 이름입니다.

    응답에는 minimalTargetSizeGb 값이 포함됩니다. 이 값을 사용하여 스토리지 축소 작업을 실행할 때 --storage-size 매개변수에 사용할 값을 확인할 수 있습니다.

    또한 응답은 다음과 비슷한 예상 작업 시간이 포함된 메시지를 반환합니다.

    ...
    "The estimated operation time is 20 minutes".
    

    REST v1

    GET 메서드를 사용하여 인스턴스의 타겟 최소 스토리지 용량을 확인합니다.

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

    • PROJECT_ID: 기본 인스턴스가 있는 프로젝트의 이름
    • INSTANCE_ID: 기본 인스턴스의 인스턴스 ID입니다.

    HTTP 메서드 및 URL:

    GET https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/getDiskShrinkConfig

    요청을 보내려면 다음 옵션 중 하나를 펼칩니다.

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

    응답에는 min_target_size_gb 값이 포함됩니다. 이 값을 사용하여 스토리지 축소 작업을 실행할 때 --storage-size 매개변수에 사용할 값을 확인할 수 있습니다.

    또한 응답은 다음과 비슷한 예상 작업 시간이 포함된 메시지를 반환합니다.

    ...
    "The estimated operation time is 20 minutes".
    

    REST v1beta4

    GET 메서드를 사용하여 인스턴스의 타겟 최소 스토리지 용량을 확인합니다.

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

    • PROJECT_ID: 기본 인스턴스가 있는 프로젝트의 이름
    • INSTANCE_ID: 기본 인스턴스의 인스턴스 ID입니다.

    HTTP 메서드 및 URL:

    GET https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/getDiskShrinkConfig

    요청을 보내려면 다음 옵션 중 하나를 펼칩니다.

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

    응답에는 min_target_size_gb 값이 포함됩니다. 이 값을 사용하여 스토리지 축소 작업을 실행할 때 --storage-size 매개변수에 사용할 값을 확인할 수 있습니다.

    또한 응답은 다음과 비슷한 예상 작업 시간이 포함된 메시지를 반환합니다.

    ...
    "The estimated operation time is 20 minutes".
    
  2. 인스턴스의 스토리지 용량을 축소합니다.

    gcloud

    다음 명령어를 실행하여 인스턴스의 스토리지를 축소합니다.

    gcloud sql instances perform-storage-shrink INSTANCE_NAME \
      --storage-size=TARGET_STORAGE_SIZE --async
    

    다음을 바꿉니다.

    • INSTANCE_NAME: 인스턴스 이름입니다.
    • TARGET_STORAGE_SIZE: 타겟 스토리지 용량(GB)입니다. 예를 들어 100GB입니다.

    --async 플래그를 사용하여 비동기적으로 작업을 기다리는 것이 좋습니다.

    REST v1

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

    • PROJECT_ID: 인스턴스가 있는 프로젝트의 ID입니다.
    • INSTANCE_ID: 인스턴스의 ID입니다.
    • TARGET_STORAGE_SIZE: 대상 스토리지 크기(GB)입니다.

    HTTP 메서드 및 URL:

    POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/performDiskShrink

    JSON 요청 본문:

    {
      "targetSizeGb": TARGET_STORAGE_SIZE
    }
    

    요청을 보내려면 다음 옵션 중 하나를 펼칩니다.

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

    REST v1beta4

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

    • PROJECT_ID: 인스턴스가 있는 프로젝트의 ID입니다.
    • INSTANCE_ID: 인스턴스의 ID입니다.
    • TARGET_STORAGE_SIZE: 인스턴스의 대상 스토리지 크기입니다.

    HTTP 메서드 및 URL:

    POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/performDiskShrink

    JSON 요청 본문:

    {
      "targetSizeGb": TARGET_STORAGE_SIZE
    }
    

    요청을 보내려면 다음 옵션 중 하나를 펼칩니다.

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

  3. 스토리지 축소 작업의 상태를 확인하려면 작업 상태 확인을 참고하세요.

스토리지 축소 작업 취소

  1. 스토리지 축소 작업 ID를 가져옵니다.

    다음 list 명령어를 실행하여 작업 ID를 가져올 수 있습니다.

    gcloud sql operations list
    
  2. 취소 요청을 보냅니다.

    gcloud

    다음 명령어를 실행하여 요청을 취소합니다.

    gcloud sql operations cancel OPERATION_ID
    

    다음을 바꿉니다.

    OPERATION_ID: 취소할 스토리지 축소 작업의 ID입니다.

    REST v1

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

    • PROJECT_ID: 인스턴스가 있는 프로젝트의 ID입니다.
    • OPERATION_ID: 취소할 스토리지 축소 작업의 ID입니다.

    HTTP 메서드 및 URL:

    POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID/cancel

    요청을 보내려면 다음 옵션 중 하나를 펼칩니다.

    성공 상태 코드(2xx)와 빈 응답을 받게 됩니다.

    REST v1beta4

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

    • PROJECT_ID: 인스턴스가 있는 프로젝트의 ID입니다.
    • OPERATION_ID: 취소할 스토리지 축소 작업의 ID입니다.

    HTTP 메서드 및 URL:

    POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID/cancel

    요청을 보내려면 다음 옵션 중 하나를 펼칩니다.

    성공 상태 코드(2xx)와 빈 응답을 받게 됩니다.

취소 요청 또는 기타 작업의 상태 확인

요청 상태를 확인하려면 다음 명령어를 실행하세요.

gcloud

  1. 취소 요청의 작업 ID를 가져옵니다.

    gcloud sql operations list
    
  2. 작업 상태를 확인합니다.

    gcloud sql operations describe OPERATION_ID
    

    다음을 바꿉니다.

    OPERATION_ID: 확인할 작업의 ID입니다.

REST v1

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

  • PROJECT_ID: 인스턴스가 있는 프로젝트의 이름입니다.
  • OPERATION_ID: 스토리지 축소 작업의 ID입니다.

HTTP 메서드 및 URL:

GET https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID

요청을 보내려면 다음 옵션 중 하나를 펼칩니다.

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

REST v1beta4

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

  • PROJECT_ID: 인스턴스가 있는 프로젝트의 이름입니다.
  • OPERATION_ID: 스토리지 축소 작업의 ID입니다.

HTTP 메서드 및 URL:

GET https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID

요청을 보내려면 다음 옵션 중 하나를 펼칩니다.

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

문제 해결

문제 해결에 대한 자세한 내용은 스토리지 용량 업데이트 문제를 참고하세요.

다음 단계