読み取りプールの自動スケーリング

読み取りプール オートスケーリングでは、アプリケーションのワークロードのニーズに基づいて、読み取りプール内の読み取りプールノードが自動的に追加または削除されます。

読み取りプールの自動スケーリングを制御するには、次の 2 つの目標指標のいずれかを使用して、読み取りプール全体の平均 CPU 使用率を制限するか、読み取りプールへのアクセスを許可するクライアント接続の数を制限します。

  • 平均 CPU 使用率: 読み取りプールが動作する平均 CPU 使用率を設定できます。読み取りプールは、アプリケーションのワークロード CPU 使用率に基づいて自動的にスケールインまたはスケールアウトします。
  • 平均データベース接続数: 各ノードで処理されるクライアント データベース接続の平均数を指定できます。読み取りプールは、クライアント接続の数に基づいて自動的にスケールインまたはスケールアウトします。

これらの目標指標を適用するには、読み取りプールノードの最小数と最大数も設定する必要があります。

読み取りプールの自動スケーリングを有効にするには、インスタンスでこれらのターゲット指標のいずれかまたは両方を構成します。両方の指標がアクティブな場合、Cloud SQL は両方の指標で示される最大読み取りプール ノード数を適用します。

次の表に、各目標指標の上限を示します。

ターゲット指標名 上限 関連する公開指標
平均 CPU 使用率 0.1 ~ 0.9。 読み取りプール内の読み取りプールノードの平均 CPU 使用率cloudsql.googleapis.com/database/cpu/utilization)。
データベース接続の平均数 10 ~ 262,142 の範囲。注: 許容される最大値は、max_connections データベース フラグで設定された最大値と相関関係があります。 読み取りプール内の読み取りプールノード全体のデータベース クライアント接続の平均数cloudsql.googleapis.com/database/postgresql/num_backends)を表します。注: インスタンスでマネージド接続プーリングが有効になっている場合、接続プールを構成する個々の接続は個別にカウントされず、AVERAGE_DB_CONNECTIONS 指標に含まれません。マネージド接続プーリングが有効になっている場合は、AVERAGE_CPU_UTILIZATION 指標のみを使用して読み取りプールの自動スケーリングを制御することをおすすめします。

読み取りプールのサイズを変更する条件が満たされると、読み取りプールの自動スケーリング オペレーションを Google Cloud コンソールで確認できます。読み取りプールの自動スケーリングが完了するまで、読み取りプールとプライマリ インスタンスに対する他のすべてのオペレーションはブロックされます。

読み取りプールの自動スケーリングの特性

次の特性が適用されます。

  • スケールイン オペレーションでは、一度に 1 つのノードのみが削除されます。
  • スケールアウト オペレーションでは、必要に応じてノードが並列で追加されます。
  • デフォルトでは、スケールインとスケールアウトの両方のオペレーションが適用されます。必要に応じて、スケールイン オペレーションを手動で無効にして(disableScaleIn)、ブロックできます。
  • デフォルトでは、連続する読み取りプール自動スケーリング オペレーションの間に 600 秒のクールダウン期間が適用されます。スケールインまたはスケールアウトのいずれの場合でも、最小クールダウン期間は 60 秒です。
  • 目標指標を設定する場合は、使用する最小(minNodeCount)および最大(maxNodeCount)の読み取りプールノード数も定義する必要があります。既存の読み取りプールで自動スケーリングを有効にする場合、現在の読み取りプールのサイズは設定した範囲内に収まっている必要があります。

制限事項

次の制限が適用されます。

  • 読み取りプール自動スケーリングでは、24 時間ごとに最大 10 個の自動スケーリング オペレーションがサポートされます。
  • 新しい読み取りプールを作成するか、既存の読み取りプールをスケーリングする場合は、以前の作成オペレーションとスケーリング オペレーションが完了するまで待つ必要があります。これは、読み取りプールに関連付けられたオペレーションと、同じプライマリ インスタンスに関連付けられた他の読み取りプールに適用されます。同時実行オペレーションを実行しようとすると、次のエラー メッセージが表示されることがあります。
    Operation failed because another operation was already in progress.
    

始める前に

  • max_wal_sendersmax_replication_slots にも適切な値を設定してください。詳細については、読み取りプールの特性をご覧ください。

自動スケーリングが有効な読み取りプールを作成する

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
    使用可能な 2 つの指標のうち、少なくとも 1 つを定義する必要があります。
  • VALUE_1: 前の手順で指定したターゲット指標に割り当てる値。たとえば、AVERAGE_CPU_UTILIZATION ターゲット指標に値 0.50 を割り当てることができます。

Terraform

自動スケーリングが有効な読み取りプールを作成するには、Terraform リソースを使用します。

次の例には、プライマリ インスタンスと読み取りプールのリソースが含まれています。


resource "google_sql_database_instance" "primary" {
  name             = "postgres-primary"
  database_version = "POSTGRES_17"
  region           = "europe-west4"

  instance_type = "CLOUD_SQL_INSTANCE"

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

    backup_configuration {
      enabled = true
    }

    ip_configuration {
      ipv4_enabled = true
    }
  }
}

resource "google_sql_database_instance" "replica" {
  name             = "postgres-replica"
  database_version = "POSTGRES_17"
  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 プロジェクトを設定します。

    このコマンドは、プロジェクトごとに 1 回だけ実行する必要があります。これは任意のディレクトリで実行できます。

    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 を初期化します。これは、ディレクトリごとに 1 回だけ行います。
    terraform init

    最新バージョンの Google プロバイダを使用する場合は、-upgrade オプションを使用します。

    terraform init -upgrade

変更を適用する

  1. 構成を確認して、Terraform が作成または更新するリソースが想定どおりであることを確認します。
    terraform plan

    必要に応じて構成を修正します。

  2. 次のコマンドを実行します。プロンプトで「yes」と入力して、Terraform 構成を適用します。
    terraform apply

    Terraform に「Apply complete!」というメッセージが表示されるまで待ちます。

  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: 使用するデータベース バージョン(例: POSTGRES_16)。
  • MACHINE_TIER: 使用するマシン階層(db-perf-optimized-N-2 など)。
  • FULL_NETWORK_NAME: 使用するネットワークの名前。
  • MAX_NODE_COUNT: 読み取りプールで使用する読み取りプールノードの最大数(10 など)。
  • MIN_NODE_COUNT: 読み取りプールで使用する読み取りプールノードの最小数(2 など)。
  • TARGET_METRIC_1: 使用するターゲット指標(AVERAGE_CPU_UTILIZATIONAVERAGE_DB_CONNECTIONS など)。使用可能な 2 つの指標のうち、少なくとも 1 つを定義する必要があります。
  • 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: 使用するデータベース バージョン(例: POSTGRES_16)。
  • 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
    使用可能な 2 つの指標のうち、少なくとも 1 つを定義する必要があります。
  • 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
    使用可能な 2 つの指標のうち、少なくとも 1 つを定義する必要があります。
  • 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
    使用可能な 2 つの指標のうち、少なくとも 1 つを定義する必要があります。
  • 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
    使用可能な 2 つの指標のうち、少なくとも 1 つを定義する必要があります。
  • 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 に関連付けられたシステム イベント監査ログ メッセージも確認できます。このメッセージには、古いノード数と新しいノード数が含まれています。

次のステップ