읽기 풀 자동 확장

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

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

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

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

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

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

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

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

읽기 풀 자동 확장 특성

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

  • 축소 작업은 한 번에 하나의 노드만 삭제합니다.
  • 수평 확장 작업은 필요한 만큼의 노드를 동시에 추가합니다.
  • 기본적으로 축소 및 확장 작업이 모두 적용됩니다. 원하는 경우 수동으로 사용 중지하여 축소 작업을 차단할 수 있습니다(disableScaleIn).
  • 기본적으로 연속된 읽기 풀 자동 확장 작업 사이에 600초의 대기 기간이 적용됩니다. 수평 축소 또는 확장 여부에 관계없이 최소 대기 기간은 60초입니다.
  • 목표 측정항목을 설정할 때는 사용하려는 최소(minNodeCount) 및 최대(maxNodeCount) 읽기 풀 노드 수도 정의해야 합니다. 기존 읽기 풀에서 자동 확장을 사용 설정하는 경우 현재 읽기 풀 크기가 설정한 범위 내에 있어야 합니다.
  • 특히 복제 오버헤드 또는 읽기 풀 노드의 비SQL Server 프로세스로 인해 읽기 풀 노드에 더 높은 CPU 사용량이 누적되면 CPU 기반 자동 확장이 제한됩니다.

기본 인스턴스당 최대 읽기 풀 노드 수

기본 인스턴스당 최대 7개의 읽기 복제본을 할당할 수 있습니다.

동일한 기본 인스턴스에서 복제하는 읽기 복제본과 읽기 풀 노드의 합계는 7개를 초과할 수 없습니다.

기본 인스턴스당 최대 읽기 풀 노드 수를 계산하는 방법

개념적으로 읽기 복제본을 단일 읽기 풀 노드로 생각할 수 있습니다.

읽기 복제본을 읽기 풀로 변환한 후 읽기 풀 노드 수를 1보다 큰 숫자로 변경할 수 있습니다.

그런 다음 읽기 풀에 자동 확장을 할당하여 워크로드 요구사항에 맞게 읽기 풀 노드 수를 동적으로 늘리거나 줄일 수 있습니다.

읽기 풀에서 자동 확장이 사용 설정된 경우 읽기 풀에 유효한 최대 노드 수를 지정해야 합니다. 이 숫자를 동일한 기본에서 복제하는 기존 읽기 복제본 수 또는 동일한 기본에서 복제하는 다른 읽기 풀에 속한 읽기 풀 노드 수와 합한 값이 7을 초과할 수 없습니다.

예를 들어 기본 인스턴스에 읽기 복제본이 2개 있고 읽기 풀 노드가 2개인 읽기 풀이 1개 있고 자동 확장이 사용 설정된 두 번째 읽기 풀이 있는 경우 두 번째 읽기 풀의 최대 읽기 풀 노드 수는 3보다 큰 값일 수 없습니다.

제한사항

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

  • 새 읽기 풀을 만들거나 기존 읽기 풀을 확장하려면 이전 만들기 및 확장 작업이 완료될 때까지 기다려야 합니다. 이는 읽기 풀과 연결된 작업은 물론 동일한 기본 인스턴스와 연결된 다른 읽기 풀에도 적용됩니다. 동시 작업을 실행하려고 하면 다음 오류 메시지가 표시될 수 있습니다.
    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: 사용할 데이터베이스 버전(예: SQLSERVER_2022_ENTERPRISE)
  • 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 "random_password" "root_password" {
  length  = 24
  special = true
}

resource "google_sql_database_instance" "primary" {
  name             = "sqlserver-primary"
  database_version = "SQLSERVER_2019_ENTERPRISE"
  region           = "europe-west4"
  root_password    = random_password.root_password.result
  instance_type    = "CLOUD_SQL_INSTANCE"

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

    backup_configuration {
      enabled                        = true
      point_in_time_recovery_enabled = true
    }

    ip_configuration {
      ipv4_enabled = true
    }
  }
}

resource "google_sql_database_instance" "read_pool" {
  name                 = "sqlserver-read-pool"
  database_version     = "SQLSERVER_2019_ENTERPRISE"
  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
      min_node_count             = 2
      max_node_count             = 5
      disable_scale_in           = false
      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: 사용할 데이터베이스 버전(예: SQLSERVER_2022_ENTERPRISE)
  • MACHINE_TIER: 사용할 머신 등급입니다(예: db-perf-optimized-N-2).
  • FULL_NETWORK_NAME: 사용할 네트워크의 이름입니다.
  • MAX_NODE_COUNT: 읽기 풀 인스턴스에서 사용할 최대 읽기 풀 노드 수(예: 7) 기본 인스턴스당 최대 7개의 읽기 풀 노드를 할당할 수 있습니다. 자세한 내용은 최대 노드 수를 참조하세요.
  • 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: 사용할 데이터베이스 버전(예: SQLSERVER_2022_ENTERPRISE)
  • MACHINE_TIER: 사용할 머신 등급입니다(예: db-perf-optimized-N-2).
  • FULL_NETWORK_NAME: 사용할 네트워크의 이름입니다.
  • MAX_NODE_COUNT: 읽기 풀 인스턴스에서 사용할 최대 읽기 풀 노드 수(예: 7) 기본 인스턴스당 최대 7개의 읽기 풀 노드를 할당할 수 있습니다. 자세한 내용은 최대 노드 수를 참조하세요.
  • 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: 읽기 풀에서 사용할 최대 읽기 풀 노드 수(예: 7) 기본 인스턴스당 최대 7개의 읽기 풀 노드를 할당할 수 있습니다. 자세한 내용은 최대 노드 수를 참조하세요.
  • 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: 읽기 풀 인스턴스에서 사용할 최대 읽기 풀 노드 수(예: 7) 기본 인스턴스당 최대 7개의 읽기 풀 노드를 할당할 수 있습니다. 자세한 내용은 최대 노드 수를 참조하세요.
  • 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: 읽기 풀 인스턴스에서 사용할 최대 읽기 풀 노드 수(예: 7) 기본 인스턴스당 최대 7개의 읽기 풀 노드를 할당할 수 있습니다. 자세한 내용은 최대 노드 수를 참조하세요.
  • 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 메서드와 연결된 시스템 이벤트 감사 로그 메시지도 확인할 수 있습니다.

다음 단계