읽기 풀 자동 확장

읽기 풀 자동 확장 기능은 애플리케이션의 워크로드 요구에 따라 읽기 풀읽기 풀 노드를 자동으로 추가하거나 삭제합니다.

다음 두 가지 타겟 측정항목 중 하나를 사용하여 읽기 풀 전체의 평균 CPU 사용률을 제한하거나 읽기 풀에 대한 액세스가 허용된 클라이언트 연결 수를 제한하여 읽기 풀 자동 확장을 제어할 수 있습니다.

  • 평균 CPU 사용률: 읽기 풀이 작동할 평균 CPU 사용량을 설정할 수 있습니다. 읽기 풀은 애플리케이션의 워크로드 CPU 사용량에 따라 자동으로 확장 또는 축소됩니다.
  • 평균 데이터베이스 연결 수: 각 노드에서 처리해야 하는 평균 클라이언트 데이터베이스 연결 수를 지정할 수 있습니다. 읽기 풀은 클라이언트 연결 수에 따라 자동으로 확장 또는 축소됩니다.

이러한 타겟 측정항목을 적용하려면 최소 및 최대 읽기 풀 노드 수도 설정해야 합니다.

읽기 풀 자동 확장을 사용 설정하려면 인스턴스에서 이러한 타겟 측정항목 중 하나 또는 둘 다를 구성하면 됩니다. 두 측정항목이 모두 활성 상태인 경우 Cloud SQL은 두 측정항목 모두에 표시된 최대 읽기 풀 노드 수를 적용합니다.

다음 표에는 각 타겟 측정항목의 한도가 나와 있습니다.

타겟 측정항목 이름 한도 관련 공개 측정항목
평균 CPU 사용률 0.1~0.9 읽기 풀의 읽기 풀 노드 전체의 평균 CPU 사용률(cloudsql.googleapis.com/database/cpu/utilization)입니다.
평균 데이터베이스 연결 10~100,000 사이입니다. 참고: 허용되는 최대값은 max_connections 데이터베이스 플래그로 설정된 최대값과 관련이 있습니다. 읽기 풀의 읽기 풀 노드에 걸친 데이터베이스 클라이언트 연결의 평균(cloudsql.googleapis.com/database/network/connections)을 나타냅니다.

읽기 풀의 크기를 조절하는 조건이 충족되면 Google Cloud 콘솔에서 읽기 풀 자동 확장 작업을 볼 수 있습니다. 읽기 풀 자동 확장 작업이 완료될 때까지 읽기 풀과 기본 인스턴스의 다른 모든 작업이 차단됩니다.

읽기 풀 자동 확장 특성

다음과 같은 특성이 적용됩니다.

  • 수평 축소 작업은 한 번에 하나의 노드만 삭제합니다.
  • 스케일 아웃 작업은 필요한 만큼 노드를 병렬로 추가합니다.
  • 기본적으로 축소 및 확장 작업이 모두 적용됩니다. 선택적으로 축소 작업을 수동으로 사용 중지(disableScaleIn)하여 축소 작업을 차단할 수 있습니다.
  • 기본적으로 연속된 읽기 풀 자동 확장 작업 사이에는 600초의 쿨다운 기간이 적용됩니다. 확장 또는 축소 여부에 관계없이 최소 60초의 대기 기간이 필요합니다.
  • 타겟 측정항목을 설정할 때는 사용할 최소 (minNodeCount) 및 최대 (maxNodeCount) 읽기 풀 노드 수도 정의해야 합니다. 기존 읽기 풀에서 자동 확장을 사용 설정하는 경우 현재 읽기 풀 크기가 설정한 범위 내에 있어야 합니다.

제한사항

다음과 같은 제한사항이 적용됩니다.

  • 읽기 풀 자동 확장에서는 24시간마다 최대 10개의 자동 확장 작업을 지원합니다.
  • 새 읽기 풀을 만들거나 기존 읽기 풀을 확장하려면 이전 생성 및 확장 작업이 완료될 때까지 기다려야 합니다. 이는 읽기 풀과 연결된 작업뿐만 아니라 동일한 기본 인스턴스와 연결된 다른 읽기 풀에도 적용됩니다. 동시 작업을 실행하려고 하면 다음 오류 메시지가 표시될 수 있습니다.
    Operation failed because another operation was already in progress.
    

시작하기 전에

자동 확장이 사용 설정된 읽기 풀 만들기

AVERAGE_CPU_UTILIZATION의 타겟 값을 0.50으로 지정하면 읽기 풀의 평균 CPU 사용률이 0.50 이하로 유지되도록 읽기 풀 노드가 읽기 풀에 추가되거나 읽기 풀에서 삭제됩니다.

gcloud

자동 확장이 사용 설정된 읽기 풀을 만들려면 다음을 실행하세요.

  gcloud sql instances create READ_POOL_NAME \
  --tier=MACHINE_TIER --edition=ENTERPRISE_PLUS \
  --instance-type=READ_POOL_INSTANCE --node-count=NODE_COUNT \
  --database-version=DATABASE_VERSION \
  --master-instance-name=PRIMARY_INSTANCE_NAME \
  --region=REGION --network=NETWORK_NAME \
  --no-assign-ip \
  --auto-scale-enabled \
  --auto-scale-max-node-count=MAX_NODE_COUNT \
  --auto-scale-min-node-count=MIN_NODE_COUNT \
  --auto-scale-target-metrics=TARGET_METRIC_1=VALUE_1
  

다음을 바꿉니다.

  • READ_POOL_NAME: 읽기 풀에 할당할 이름
  • MACHINE_TIER: 사용할 머신 등급입니다(예: db-perf-optimized-N-2).
  • NODE_COUNT: 시작하려는 읽기 풀 노드 수입니다.
  • DATABASE_VERSION: 사용할 데이터베이스 버전입니다(예: POSTGRES_16).
  • PRIMARY_INSTANCE_NAME: 사용할 기본 인스턴스의 이름입니다.
  • REGION: 사용할 리전입니다(예: us-east1).
  • NETWORK_NAME: 사용할 네트워크의 이름입니다.
  • MAX_NODE_COUNT: 읽기 풀에서 사용할 최대 읽기 풀 노드 수(예: 5)
  • MIN_NODE_COUNT: 읽기 풀에서 사용할 읽기 풀 노드의 최소 수(예: 1)
  • TARGET_METRIC_1: 사용할 타겟 측정항목입니다(예: 다음).
    • AVERAGE_CPU_UTILIZATION
    • AVERAGE_DB_CONNECTIONS
    사용 가능한 두 측정항목 중 하나 이상을 정의해야 합니다.
  • VALUE_1: 이전에 지정한 타겟 측정항목에 할당할 값입니다. 예를 들어 AVERAGE_CPU_UTILIZATION 타겟 측정항목의 경우 0.50 값을 할당할 수 있습니다.

Terraform

자동 확장이 사용 설정된 읽기 풀을 만들려면 Terraform 리소스를 사용합니다.

다음 예시에는 기본 인스턴스와 읽기 풀의 리소스가 포함되어 있습니다.


resource "google_sql_database_instance" "primary" {
  name             = "mysql-primary"
  database_version = "MYSQL_8_4"
  region           = "europe-west4"

  instance_type = "CLOUD_SQL_INSTANCE"

  settings {
    tier    = "db-perf-optimized-N-2"
    edition = "ENTERPRISE_PLUS"

    backup_configuration {
      enabled            = true
      binary_log_enabled = true
    }

    ip_configuration {
      ipv4_enabled = true
    }
  }
}

resource "google_sql_database_instance" "replica" {
  name             = "mysql-replica"
  database_version = "MYSQL_8_4"
  region           = "europe-west4"

  master_instance_name = google_sql_database_instance.primary.name
  instance_type        = "READ_POOL_INSTANCE"
  node_count           = 2

  settings {
    tier    = "db-perf-optimized-N-2"
    edition = "ENTERPRISE_PLUS"

    ip_configuration {
      ipv4_enabled = true
    }
    read_pool_auto_scale_config {
      enabled                    = true
      disable_scale_in           = false
      max_node_count             = 20
      min_node_count             = 2
      scale_in_cooldown_seconds  = 600
      scale_out_cooldown_seconds = 600
      target_metrics {
        metric       = "AVERAGE_CPU_UTILIZATION"
        target_value = 0.5
      }
    }
  }
}

변경사항 적용

Google Cloud 프로젝트에 Terraform 구성을 적용하려면 다음 섹션의 단계를 완료하세요.

Cloud Shell 준비

  1. Cloud Shell을 실행합니다.
  2. Terraform 구성을 적용할 기본 Google Cloud 프로젝트를 설정합니다.

    이 명령어는 프로젝트당 한 번만 실행하면 되며 어떤 디렉터리에서도 실행할 수 있습니다.

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID

    Terraform 구성 파일에서 명시적 값을 설정하면 환경 변수가 재정의됩니다.

디렉터리 준비

각 Terraform 구성 파일에는 자체 디렉터리(루트 모듈이라고도 함)가 있어야 합니다.

  1. Cloud Shell에서 디렉터리를 만들고 해당 디렉터리 내에 새 파일을 만드세요. 파일 이름에는 .tf 확장자가 있어야 합니다(예: main.tf). 이 튜토리얼에서는 파일을 main.tf라고 합니다.
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. 튜토리얼을 따라 하는 경우 각 섹션이나 단계에서 샘플 코드를 복사할 수 있습니다.

    샘플 코드를 새로 만든 main.tf에 복사합니다.

    필요한 경우 GitHub에서 코드를 복사합니다. 이는 Terraform 스니펫이 엔드 투 엔드 솔루션의 일부인 경우에 권장됩니다.

  3. 환경에 적용할 샘플 파라미터를 검토하고 수정합니다.
  4. 변경사항을 저장합니다.
  5. Terraform을 초기화합니다. 이 작업은 디렉터리당 한 번만 수행하면 됩니다.
    terraform init

    원하는 경우 최신 Google 공급업체 버전을 사용하려면 -upgrade 옵션을 포함합니다.

    terraform init -upgrade

변경사항 적용

  1. 구성을 검토하고 Terraform에서 만들거나 업데이트할 리소스가 예상과 일치하는지 확인합니다.
    terraform plan

    필요에 따라 구성을 수정합니다.

  2. 다음 명령어를 실행하고 프롬프트에 yes를 입력하여 Terraform 구성을 적용합니다.
    terraform apply

    Terraform에 '적용 완료' 메시지가 표시될 때까지 기다립니다.

  3. 결과를 보려면 Google Cloud 프로젝트를 엽니다. Google Cloud 콘솔에서 UI의 리소스로 이동하여 Terraform이 리소스를 만들었거나 업데이트했는지 확인합니다.

변경사항 삭제

변경사항을 삭제하려면 다음 단계를 따르세요.

  1. Terraform 구성 파일에서 삭제 보호를 사용 중지하려면 deletion_protection 인수를 false로 설정합니다.
    deletion_protection =  "false"
  2. 다음 명령어를 실행하고 프롬프트에 yes를 입력하여 업데이트된 Terraform 구성을 적용합니다.
    terraform apply
  1. 다음 명령어를 실행하고 프롬프트에 yes를 입력하여 이전에 Terraform 구성에 적용된 리소스를 삭제합니다.

    terraform destroy

REST v1

자동 확장 기능이 사용 설정된 읽기 풀을 만들려면 instances:insert 메서드와 함께 POST 요청을 사용합니다.

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

  • READ_POOL_NAME: 읽기 풀에 할당할 이름
  • REGION: 인스턴스가 상주할 리전입니다(예: us-central1).
  • PRIMARY_INSTANCE_ID: 사용할 기본 인스턴스의 ID입니다.
  • PROJECT_ID: 읽기 풀이 있을 프로젝트의 ID(예: my-project-name)
  • DATABASE_VERSION: 사용할 데이터베이스 버전입니다(예: MYSQL_8_0_37).
  • MACHINE_TIER: 사용할 머신 등급입니다(예: db-perf-optimized-N-2).
  • FULL_NETWORK_NAME: 사용할 네트워크의 이름입니다.
  • MAX_NODE_COUNT: 읽기 풀에서 사용할 읽기 풀 노드의 최대 수(예: 10)
  • MIN_NODE_COUNT: 읽기 풀에서 사용할 최소 읽기 풀 노드 수(예: 2)
  • TARGET_METRIC_1: 사용할 타겟 측정항목입니다(예: AVERAGE_CPU_UTILIZATION 또는 AVERAGE_DB_CONNECTIONS). 사용 가능한 두 측정항목 중 하나 이상을 정의해야 합니다.
  • VALUE_1: 이전에 지정한 타겟 측정항목에 할당할 값입니다. 예를 들어 AVERAGE_CPU_UTILIZATION 타겟 측정항목의 경우 0.50 값을 할당할 수 있습니다.
  • NODE_COUNT: 시작할 읽기 풀 노드 수(예: 3)

HTTP 메서드 및 URL:

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

JSON 요청 본문:

{
  "name":"READ_POOL_NAME",
  "region":"REGION",
  "masterInstanceName":"PRIMARY_INSTANCE_ID",
  "project":"PROJECT_ID",
  "databaseVersion":"DATABASE_VERSION",
  "settings":{
    "tier":"MACHINE_TIER",
    "edition":"ENTERPRISE_PLUS",
    "ipConfiguration":{
      "privateNetwork":"FULL_NETWORK_NAME",
      "ipv4Enabled": false
    },
    "readPoolAutoScaleConfig":{
      "enabled": true,
      "minNodeCount": MIN_NODE_COUNT,
      "maxNodeCount": MAX_NODE_COUNT,
      "targetMetrics": [
        {
          "metric":"TARGET_METRIC_1",
          "targetValue": VALUE_1
        }
      ]
    }
  },
  "instanceType":"READ_POOL_INSTANCE",
  "nodeCount": NODE_COUNT
}

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

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

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/PRIMARY_INSTANCE_ID",
  "status": "RUNNING",
  "user": "user@example.com",
  "insertTime": "2020-01-16T02:32:12.281Z",
  "startTime": "2023-06-14T18:48:35.499Z",
  "operationType": "CREATE",
  "name": "OPERATION_ID",
  "targetId": "PRIMARY_INSTANCE_ID",
  "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID",
  "targetProject": "PROJECT_ID"
}

REST v1beta4

자동 확장 기능이 사용 설정된 읽기 풀을 만들려면 instances:insert 메서드와 함께 POST 요청을 사용합니다.

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

  • READ_POOL_NAME: 읽기 풀에 할당할 이름
  • REGION: 인스턴스가 상주할 리전입니다(예: us-central1).
  • PRIMARY_INSTANCE_ID: 사용할 기본 인스턴스의 ID입니다.
  • PROJECT_ID: 읽기 풀이 있을 프로젝트의 ID(예: my-project-name)
  • DATABASE_VERSION: 사용할 데이터베이스 버전입니다(예: MYSQL_8_0_37).
  • MACHINE_TIER: 사용할 머신 등급입니다(예: db-perf-optimized-N-2).
  • FULL_NETWORK_NAME: 사용할 네트워크의 이름입니다.
  • MAX_NODE_COUNT: 읽기 풀에서 사용할 읽기 풀 노드의 최대 수(예: 10)
  • MIN_NODE_COUNT: 읽기 풀에서 사용할 최소 읽기 풀 노드 수(예: 2)
  • TARGET_METRIC_1: 사용할 타겟 측정항목입니다(예:
      ).
    • AVERAGE_CPU_UTILIZATION
    • AVERAGE_DB_CONNECTIONS
    사용 가능한 두 측정항목 중 하나 이상을 정의해야 합니다.
  • VALUE_1: 이전에 지정한 타겟 측정항목에 할당할 값입니다. 이 예시에서 AVERAGE_CPU_UTILIZATION 타겟 측정항목에 0.50 값을 할당합니다.
  • NODE_COUNT: 시작할 읽기 풀 노드 수(예: 3)

HTTP 메서드 및 URL:

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

JSON 요청 본문:

{
  "name":"READ_POOL_NAME",
  "region":"REGION",
  "masterInstanceName":"PRIMARY_INSTANCE_ID",
  "project":"PROJECT_ID",
  "databaseVersion":"DATABASE_VERSION",
  "settings":{
    "tier":"MACHINE_TIER",
    "edition":"ENTERPRISE_PLUS",
    "ipConfiguration":{
      "privateNetwork":"FULL_NETWORK_NAME",
      "ipv4Enabled": false
    },
    "readPoolAutoScaleConfig":{
      "enabled": true,
      "minNodeCount": MIN_NODE_COUNT,
      "maxNodeCount": MAX_NODE_COUNT,
      "targetMetrics": [
        {
          "metric":"TARGET_METRIC_1",
          "targetValue": VALUE_1
        }
      ]
    }
  },
  "instanceType":"READ_POOL_INSTANCE",
  "nodeCount": NODE_COUNT
}

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

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

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/PRIMARTY_INSTANCE_ID",
  "status": "RUNNING",
  "user": "user@example.com",
  "insertTime": "2020-01-16T02:32:12.281Z",
  "startTime": "2023-06-14T18:48:35.499Z",
  "operationType": "CREATE",
  "name": "OPERATION_ID",
  "targetId": "PRIMARTY_INSTANCE_ID",
  "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID",
  "targetProject": "PROJECT_ID"
}

기존 읽기 풀에서 읽기 풀 자동 확장 사용 설정

이미 읽기 풀이 생성된 경우 사용할 자동 확장 구성을 지정하여 자동 확장을 사용 설정할 수 있습니다.

예를 들어 AVERAGE_DB_CONNECTIONS의 타겟 값을 50로 지정하면 풀 전체의 평균 데이터베이스 연결 수가 50 이하로 유지되도록 읽기 풀에서 노드가 추가되거나 삭제됩니다.

gcloud

기존 읽기 풀에서 자동 확장을 사용하여 읽기 풀을 사용 설정하려면 다음 명령어를 실행합니다.

  gcloud sql instances patch INSTANCE
  --auto-scale-enabled
  --auto-scale-max-node-count=MAX_NODE_COUNT
  --auto-scale-min-node-count=MIN_NODE_COUNT
  --auto-scale-out-cooldown-seconds=COOLDOWN_SECONDS_SCALE_OUT
  --auto-scale-in-cooldown-seconds=COOLDOWN_SECONDS_SCALE_IN
  --auto-scale-target-metrics=TARGET_METRIC_1=VALUE_1
  

다음을 바꿉니다.

  • INSTANCE_NAME: 수정하려는 읽기 풀과 연결된 인스턴스 이름입니다.
  • MAX_NODE_COUNT: 읽기 풀에서 사용할 읽기 풀 노드의 최대 수(예: 10)
  • MIN_NODE_COUNT: 읽기 풀에서 사용할 최소 읽기 풀 노드 수(예: 2)
  • COOLDOWN_SECONDS_SCALE_OUT: 선택사항: 읽기 풀 노드 생성 또는 삭제 사이의 쿨다운 또는 대기 시간(초)(예: 180) 최소 60초의 대기 시간이 필요합니다. 기본값은 600초입니다.
  • COOLDOWN_SECONDS_SCALE_IN: 선택사항: 읽기 풀 노드 생성 또는 삭제 사이의 쿨다운 또는 대기 시간(초)(예: 180) 최소 60초의 대기 시간이 필요합니다. 기본값은 600초입니다.
  • TARGET_METRIC_1: 사용할 타겟 측정항목입니다(예:
      ).
    • AVERAGE_CPU_UTILIZATION
    • AVERAGE_DB_CONNECTIONS
    사용 가능한 두 측정항목 중 하나 이상을 정의해야 합니다.
  • VALUE_1: 이전에 지정한 타겟 측정항목에 할당할 값입니다. 이 예시에서 AVERAGE_DB_CONNECTIONS 타겟 측정항목에 50 값을 할당합니다.

REST v1

자동 확장으로 기존 읽기 풀을 사용 설정하려면 PATCH 메서드를 사용합니다.

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

  • PROJECT_ID: 인스턴스가 포함된 Google Cloud 프로젝트의 ID 또는 프로젝트 번호
  • INSTANCE_ID: 읽기 풀과 연결된 인스턴스의 ID입니다.
  • MAX_NODE_COUNT: 읽기 풀에서 사용할 읽기 풀 노드의 최대 수(예: 10)
  • MIN_NODE_COUNT: 읽기 풀에서 사용할 최소 읽기 풀 노드 수(예: 2)
  • COOLDOWN_SECONDS: 선택사항: 읽기 풀 노드 생성 또는 삭제 사이의 쿨다운 또는 대기 시간(초)(예: 180)
  • SCALE_IN_DISABLED: 선택사항: 읽기 풀 축소 동작을 사용 중지할 수 있습니다. 읽기 풀 축소를 사용 중지하려면 값을 true로 설정합니다.
  • TARGET_METRIC_1: 사용할 타겟 측정항목입니다(예:
      ).
    • AVERAGE_CPU_UTILIZATION
    • AVERAGE_DB_CONNECTIONS
    사용 가능한 두 측정항목 중 하나 이상을 정의해야 합니다.
  • VALUE_1: 이전에 지정한 타겟 측정항목에 할당할 값입니다. 이 예시에서 AVERAGE_DB_CONNECTIONS 타겟 측정항목에 50 값을 할당합니다.

HTTP 메서드 및 URL:

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

JSON 요청 본문:

{
  "settings": {
    "readPoolAutoScaleConfig": {
      "enabled": true,
      "minNodeCount": MIN_NODE_COUNT,
      "maxNodeCount": MAX_NODE_COUNT,
      "scaleOutCooldownSeconds": COOLDOWN_SECONDS,
      "disableScaleIn": SCALE_IN_DISABLED,
      "targetMetrics": [
        {
          "metric": "TARGET_METRIC_1",
          "targetValue": VALUE_1
        }
      ]
    }
  }
}

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

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

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID",
  "status": "RUNNING",
  "user": "user@example.com",
  "insertTime": "2020-01-16T02:32:12.281Z",
  "startTime": "2023-06-14T18:48:35.499Z",
  "operationType": "UPDATE",
  "name": "OPERATION_ID",
  "targetId": "INSTANCE_ID",
  "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID",
  "targetProject": "PROJECT_ID"
}

REST v1beta4

자동 확장으로 기존 읽기 풀을 사용 설정하려면 PATCH 메서드를 사용합니다.

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

  • PROJECT_ID: 인스턴스가 포함된 Google Cloud 프로젝트의 ID 또는 프로젝트 번호
  • INSTANCE_ID: 읽기 풀과 연결된 인스턴스의 ID입니다.
  • MAX_NODE_COUNT: 읽기 풀에서 사용할 읽기 풀 노드의 최대 수(예: 10)
  • MIN_NODE_COUNT: 읽기 풀에서 사용할 최소 읽기 풀 노드 수(예: 2)
  • COOLDOWN_SECONDS: 선택사항: 읽기 풀 노드 생성 또는 삭제 사이의 쿨다운 또는 대기 시간(초)(예: 180)
  • SCALE_IN_DISABLED: 선택사항: 읽기 풀 축소 동작을 사용 중지할 수 있습니다. 읽기 풀 축소를 사용 중지하려면 값을 true로 설정합니다.
  • TARGET_METRIC_1: 사용할 타겟 측정항목입니다(예:
      ).
    • AVERAGE_CPU_UTILIZATION
    • AVERAGE_DB_CONNECTIONS
    사용 가능한 두 측정항목 중 하나 이상을 정의해야 합니다.
  • VALUE_1: 이전에 지정한 타겟 측정항목에 할당할 값입니다. 이 예시에서 AVERAGE_DB_CONNECTIONS 타겟 측정항목에 50 값을 할당합니다.

HTTP 메서드 및 URL:

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

JSON 요청 본문:

{
  "settings": {
    "readPoolAutoScaleConfig": {
      "enabled": true,
      "minNodeCount": MIN_NODE_COUNT,
      "maxNodeCount": MAX_NODE_COUNT,
      "scaleOutCooldownSeconds": COOLDOWN_SECONDS,
      "disableScaleIn": SCALE_IN_DISABLED,
      "targetMetrics": [
        {
          "metric": "TARGET_METRIC_1",
          "targetValue": VALUE_1
        }
      ]
    }
  }
}

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

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

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID",
  "status": "RUNNING",
  "user": "user@example.com",
  "insertTime": "2020-01-16T02:32:12.281Z",
  "startTime": "2023-06-14T18:48:35.499Z",
  "operationType": "UPDATE",
  "name": "OPERATION_ID",
  "targetId": "INSTANCE_ID",
  "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID",
  "targetProject": "PROJECT_ID"
}

읽기 풀에서 읽기 풀 자동 확장 사용 중지

읽기 풀 자동 확장을 사용 중지하려면 다음 단계를 완료하세요.

gcloud

읽기 풀 자동 확장을 사용 중지하려면 다음 명령어를 실행합니다.

  gcloud sql instances patch INSTANCE_NAME
  --no-auto-scale-enabled
  

다음을 바꿉니다.

  • INSTANCE_NAME: 수정하려는 읽기 풀과 연결된 인스턴스 이름입니다.

REST v1

읽기 풀 자동 확장 처리를 사용 중지하려면 PATCH 메서드를 사용합니다.

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

  • PROJECT_ID: 인스턴스가 포함된 Google Cloud 프로젝트의 ID 또는 프로젝트 번호
  • INSTANCE_ID: 읽기 풀과 연결된 인스턴스의 ID입니다.

HTTP 메서드 및 URL:

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

JSON 요청 본문:

{
  "settings":{
    "readPoolAutoScaleConfig":{
      "enabled": false
    }
  }
}

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

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

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID",
  "status": "RUNNING",
  "user": "user@example.com",
  "insertTime": "2020-01-16T02:32:12.281Z",
  "startTime": "2023-06-14T18:48:35.499Z",
  "operationType": "CREATE",
  "name": "OPERATION_ID",
  "targetId": "INSTANCE_ID",
  "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID",
  "targetProject": "PROJECT_ID"
}

REST v1beta4

읽기 풀 자동 확장 처리를 사용 중지하려면 PATCH 메서드를 사용합니다.

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

  • PROJECT_ID: 인스턴스가 포함된 Google Cloud 프로젝트의 ID 또는 프로젝트 번호
  • INSTANCE_ID: 읽기 풀과 연결된 인스턴스의 ID입니다.

HTTP 메서드 및 URL:

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

JSON 요청 본문:

{
  "settings":{
    "readPoolAutoScaleConfig":{
      "enabled": false
    }
  }
}

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

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

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID",
  "status": "RUNNING",
  "user": "user@example.com",
  "insertTime": "2020-01-16T02:32:12.281Z",
  "startTime": "2023-06-14T18:48:35.499Z",
  "operationType": "CREATE",
  "name": "OPERATION_ID",
  "targetId": "INSTANCE_ID",
  "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID",
  "targetProject": "PROJECT_ID"
}

측정항목 보기

시스템 통계를 사용하여 읽기 풀의 관련 측정항목을 확인합니다.

AVERAGE_CPU_UTILIZATION의 경우 CPU 사용률 주요 측정항목 차트를 참고하세요.

AVERAGE_DB_CONNECTIONS의 경우 총 연결 수 주요 측정항목 차트를 참고하세요.

읽기 풀 자동 확장 작업 모니터링

읽기 풀 자동 확장 이벤트를 트리거하는 조건이 충족되면 인스턴스에서 UPDATE 작업이 실행됩니다. Google Cloud 콘솔에서 이 작업을 볼 수 있습니다.

읽기 풀 자동 확장 작업을 인스턴스에 적용하는 데 10분 이상 걸릴 수 있습니다. 기존 연결은 새로 추가된 읽기 풀 노드로 이전되지 않으므로 새 연결만 읽기 풀 자동 확장으로 영향을 받습니다.

읽기 풀에서 자동 확장 작업이 실행되는 동안 읽기 풀 또는 기본 인스턴스에서 다른 업데이트를 실행하기 전에 작업이 완료될 때까지 기다려야 합니다. 동시 요청을 실행하려고 하면 다음과 같은 오류 메시지가 표시될 수 있습니다.

  Operation failed because another operation was already in progress.
  

읽기 풀 인스턴스를 검사하여 노드 수 변경을 확인할 수 있습니다.

  gcloud sql instances describe READ_POOL_NAME
  | grep nodeCount
  

다음을 바꿉니다.

  • READ_POOL_NAME: 정보를 가져오려는 읽기 풀의 이름

시스템 이벤트 감사 로그

이전 노드 수와 새 노드 수가 포함된 메서드 cloudsql.instances.readPoolAutoScale와 연결된 시스템 이벤트 감사 로그 메시지도 확인할 수 있습니다.

다음 단계