読み取りプールを作成して管理する

このページでは、大規模な読み取りワークロードの読み取りプールを作成して管理する方法について説明します。

始める前に

  1. リードプールには、プライマリ インスタンスのコピーが含まれています。まだ作成していない場合は、Cloud SQL Enterprise Plus エディションのプライマリ インスタンスを作成します。リードプールはパブリック IP 接続をサポートしていますが、このガイドでは、プライベート IP(PSA)接続を使用してプライマリ インスタンスを作成します。プライマリ インスタンスとレプリケーションの詳細については、Cloud SQL でのレプリケーションについてをご覧ください。
  2. プライマリ インスタンスの作成後、root ユーザーのパスワードを選択し、次のコマンドを実行してプライマリ インスタンスにパスワードを設定します。このパスワードを保存して、後で読み取りプールに接続するときに使用します。
  3.     gcloud --project=PROJECT \
        sql users set-password root --host=% \
        --instance=PRIMARY_INSTANCE_NAME --prompt-for-password
      

    次のように置き換えます。

    • PROJECT: プライマリ インスタンスと読み取りプールを配置するプロジェクトの名前。
    • PRIMARY_INSTANCE_NAME: プライマリ インスタンスの名前。

読み取りプールを作成する

gcloudREST v1REST v1beta4

gcloud CLI のインストールと使用開始については、gcloud CLI をインストールするをご覧ください。Cloud Shell の起動については、Cloud Shell を使用するをご覧ください。

次の gcloud beta sql instances create コマンドを使用して、複数のリードルーム ノードを含むリードルームを作成します。

      gcloud beta sql instances create READ_POOL_NAME \
      --tier=TIER --edition=ENTERPRISE_PLUS \
      --instance-type=READ_POOL_INSTANCE --node-count=NODE_COUNT \
      --master-instance-name=PRIMARY_INSTANCE_NAME
    

次のように置き換えます。

  • READ_POOL_NAME: 読み取りプールに使用する名前。
  • TIER: 読み取りプールの各読み取りプールノードに使用するマシンタイプ(db-perf-optimized-N-4 など)。
  • NODE_COUNT: 読み取りプールに必要な読み取りプール ノードの数。120 の数値を選択します。
  • PRIMARY_INSTANCE_NAME: 読み取りプールに関連付けられているプライマリ インスタンスの名前(my-primary-instance など)。

インスタンス リソースの insert メソッドを使用して、複数のリードレプリカ ノードを含むリードプールを作成します。databaseVersion プロパティはプライマリと同じにする必要があります。

リクエストのデータを使用する前に、次のように置き換えます。

  • PROJECT: プライマリ インスタンスと読み取りプールを配置するプロジェクトの名前。
  • REGION: 読み取りプールのリージョン(us-east1 など)。リージョンはプライマリ インスタンスと同じにする必要があります。
  • TIER: 読み取りプールの各読み取りプールノードに使用するマシンタイプ(db-perf-optimized-N-4 など)。
  • PRIMARY_INSTANCE_NAME: プライマリ インスタンスの名前。
  • READ_POOL_NAME: 読み取りプールに使用する名前(my-read-pool など)。
  • DATABASE_VERSION: 使用するデータベース バージョン。例: POSTGRES_16
  • NODE_COUNT: 読み取りプールに必要な読み取りプール ノードの数。120 の数値を選択します。
  • FULL_NETWORK_NAME: 読み取りプールを配置する完全なネットワーク パス(projects/vpc-host-project/global/networks/my-network-name など)。

HTTP メソッドと URL:

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

リクエストの本文(JSON):

{
  "name": "READ_POOL_NAME",
  "masterInstanceName": "PRIMARY_INSTANCE_NAME",
  "project": "PROJECT",
  "databaseVersion": "DATABASE_VERSION",
  "region": "REGION",
  "instanceType": "READ_POOL_INSTANCE",
  "nodeCount": NODE_COUNT,
  "settings": {
    "tier": "TIER",
    "edition": "ENTERPRISE_PLUS",
    "ipConfiguration": {
      "ipv4Enabled": false,
      "privateNetwork": "FULL_NETWORK_NAME"
    }
  }
}

リクエストを送信するには、次のいずれかのオプションを展開します。

リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://sqladmin.googleapis.com/v1/projects/PROJECT/instances"

リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://sqladmin.googleapis.com/v1/projects/PROJECT/instances" | Select-Object -Expand Content

次のような JSON レスポンスが返されます。

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT/instances/READ_POOL_NAME",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2020-01-21T22:43:37.981Z",
  "operationType": "CREATE_READ_POOL",
  "name": "OPERATION_ID",
  "targetId": "INSTANCE_ID",
  "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT/operations/OPERATION_ID",
  "targetProject": "PROJECT"
}

インスタンス リソースの insert メソッドを使用して、複数のリードレプリカ ノードを含むリードプールを作成します。databaseVersion プロパティはプライマリと同じにする必要があります。

リクエストのデータを使用する前に、次のように置き換えます。

  • PROJECT: プライマリ インスタンスと読み取りプールを配置するプロジェクトの名前。
  • REGION: 読み取りプールのリージョン(us-east1 など)。リージョンはプライマリ インスタンスと同じにする必要があります。
  • TIER: 読み取りプールの各読み取りプールノードに使用するマシンタイプ(db-perf-optimized-N-4 など)。
  • PRIMARY_INSTANCE_NAME: プライマリ インスタンスの名前。
  • READ_POOL_NAME: 読み取りプールに使用する名前(my-read-pool など)。
  • DATABASE_VERSION: 使用するデータベース バージョン。例: POSTGRES_16
  • NODE_COUNT: 読み取りプールに必要な読み取りプール ノードの数。120 の数値を選択します。
  • FULL_NETWORK_NAME: 読み取りプールを配置する完全なネットワーク パス(projects/vpc-host-project/global/networks/my-network-name など)。

HTTP メソッドと URL:

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

リクエストの本文(JSON):

{
  "name": "READ_POOL_NAME",
  "masterInstanceName": "PRIMARY_INSTANCE_NAME",
  "project": "PROJECT",
  "databaseVersion": "DATABASE_VERSION",
  "region": "REGION",
  "instanceType": "READ_POOL_INSTANCE",
  "nodeCount": NODE_COUNT,
  "settings": {
    "tier": "TIER",
    "edition": "ENTERPRISE_PLUS",
    "ipConfiguration": {
      "ipv4Enabled": false,
      "privateNetwork": "FULL_NETWORK_NAME"
    }
  }
}

リクエストを送信するには、次のいずれかのオプションを展開します。

リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT/instances"

リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT/instances" | Select-Object -Expand Content

次のような JSON レスポンスが返されます。

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT/instances/READ_POOL_NAME",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2020-01-21T22:43:37.981Z",
  "operationType": "CREATE_READ_POOL",
  "name": "OPERATION_ID",
  "targetId": "INSTANCE_ID",
  "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT/operations/OPERATION_ID",
  "targetProject": "PROJECT"
}

リードレプリカをリードプールに変換する

既存の Cloud SQL Enterprise Plus エディションのリードレプリカをリードプールに変換するには、プールのノード数を指定します。この変換プロセス中に、レプリカ IP が読み取りプール IP(読み取りエンドポイント)になるため、既存のクライアントは再構成せずにプールに接続できます。

新しく作成されたリードプール ノードには、元のリードレプリカと同じマシンタイプと構成が設定されます。このマシンタイプまたは構成を変更するには、別のオペレーションが必要です。このオペレーションは、ゾーンリードレプリカでのみサポートされています。高可用性(HA)リードレプリカをリードプールに変換するには、まずリージョン リードレプリカに変換する必要があります。

詳細については、読み取りプールの構成を編集するをご覧ください。

gcloudREST v1REST v1beta4

gcloud CLI のインストールと使用開始については、gcloud CLI をインストールするをご覧ください。Cloud Shell の起動については、Cloud Shell を使用するをご覧ください。

次の gcloud beta sql instances patch コマンドを使用して、リードレプリカをリードプールで使用するように変換します。

      gcloud beta sql instances patch READ_REPLICA_NAME \
      --instance-type=READ_POOL_INSTANCE --node-count=NODE_COUNT
    

次のように置き換えます。

  • READ_REPLICA_NAME: 変換するリードレプリカの名前。
  • NODE_COUNT: 読み取りプールに必要な読み取りプール ノードの数。120 の数値を選択します。

インスタンス リソースの patch メソッドを使用して、リードレプリカをリードプールに変換します。

リクエストのデータを使用する前に、次のように置き換えます。

  • READ_REPLICA_NAME: 変換するリードレプリカの名前(例: my-read-replica)。
  • NODE_COUNT: 読み取りプールに必要な読み取りプール ノードの数。120 の数値を選択します。

HTTP メソッドと URL:

PATCH https://sqladmin.googleapis.com/v1/projects/PROJECT/instances/READ_REPLICA_NAME

リクエストの本文(JSON):

{
  "instanceType": "READ_POOL_INSTANCE",
  "nodeCount": NODE_COUNT
}

リクエストを送信するには、次のいずれかのオプションを展開します。

リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。

curl -X PATCH \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://sqladmin.googleapis.com/v1/projects/PROJECT/instances/READ_REPLICA_NAME"

リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method PATCH `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://sqladmin.googleapis.com/v1/projects/PROJECT/instances/READ_REPLICA_NAME" | Select-Object -Expand Content

次のような JSON レスポンスが返されます。

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT/instances/READ_REPLICA_NAME",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2020-01-21T22:43:37.981Z",
  "operationType": "UPDATE",
  "name": "OPERATION_ID",
  "targetId": "READ_REPLICA_NAME",
  "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT/operations/OPERATION_ID",
  "targetProject": "PROJECT"
}

インスタンス リソースの patch メソッドを使用して、リードレプリカをリードプールに変換します。

リクエストのデータを使用する前に、次のように置き換えます。

  • READ_REPLICA_NAME: 変換するリードレプリカの名前(例: my-read-replica)。
  • NODE_COUNT: 読み取りプールに必要な読み取りプール ノードの数。120 の数値を選択します。

HTTP メソッドと URL:

PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT/instances/READ_REPLICA_NAME

リクエストの本文(JSON):

{
  "instanceType": "READ_POOL_INSTANCE",
  "nodeCount": NODE_COUNT
}

リクエストを送信するには、次のいずれかのオプションを展開します。

リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。

curl -X PATCH \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT/instances/READ_REPLICA_NAME"

リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method PATCH `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT/instances/READ_REPLICA_NAME" | Select-Object -Expand Content

次のような JSON レスポンスが返されます。

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT/instances/READ_REPLICA_NAME",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2020-01-21T22:43:37.981Z",
  "operationType": "UPDATE",
  "name": "OPERATION_ID",
  "targetId": "READ_REPLICA_NAME",
  "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT/operations/OPERATION_ID",
  "targetProject": "PROJECT"
}

読み取りプールをリードレプリカに変換する

gcloudREST v1REST v1beta4

gcloud CLI のインストールと使用開始については、gcloud CLI をインストールするをご覧ください。Cloud Shell の起動については、Cloud Shell を使用するをご覧ください。

次の gcloud beta sql instances patch コマンドを使用して、リードレプリカをリードプールで使用するように変換します。

      gcloud beta sql instances patch READ_POOL_NAME \
      --instance-type=READ_REPLICA_INSTANCE
    

次のように置き換えます。

  • READ_POOL_NAME: 変換する読み取りプールの名前。

インスタンス リソースの patch メソッドを使用して、リードプールをリードレプリカに変換します。

リクエストのデータを使用する前に、次のように置き換えます。

  • READ_POOL_NAME: 読み取りプールの名前(my-read-pool など)。

HTTP メソッドと URL:

PATCH https://sqladmin.googleapis.com/v1/projects/PROJECT/instances/READ_POOL_NAME

リクエストの本文(JSON):

{
  "instanceType": "READ_REPLICA_INSTANCE"
}

リクエストを送信するには、次のいずれかのオプションを展開します。

リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。

curl -X PATCH \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://sqladmin.googleapis.com/v1/projects/PROJECT/instances/READ_POOL_NAME"

リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method PATCH `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://sqladmin.googleapis.com/v1/projects/PROJECT/instances/READ_POOL_NAME" | Select-Object -Expand Content

次のような JSON レスポンスが返されます。

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT/instances/READ_POOL_NAME",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2020-01-21T22:43:37.981Z",
  "operationType": "UPDATE",
  "name": "OPERATION_ID",
  "targetId": "READ_POOL_NAME",
  "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT/operations/OPERATION_ID",
  "targetProject": "PROJECT"
}

インスタンス リソースの patch メソッドを使用して、リードプールをリードレプリカに変換します。

リクエストのデータを使用する前に、次のように置き換えます。

  • READ_POOL_NAME: 読み取りプールの名前(my-read-pool など)。

HTTP メソッドと URL:

PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT/instances/READ_POOL_NAME

リクエストの本文(JSON):

{
  "instanceType": "READ_REPLICA_INSTANCE"
}

リクエストを送信するには、次のいずれかのオプションを展開します。

リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。

curl -X PATCH \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT/instances/READ_POOL_NAME"

リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method PATCH `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT/instances/READ_POOL_NAME" | Select-Object -Expand Content

次のような JSON レスポンスが返されます。

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT/instances/READ_POOL_NAME",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2020-01-21T22:43:37.981Z",
  "operationType": "UPDATE",
  "name": "OPERATION_ID",
  "targetId": "READ_POOL_NAME",
  "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT/operations/OPERATION_ID",
  "targetProject": "PROJECT"
}

読み取りプール情報を表示する

gcloudREST v1REST v1beta4

gcloud CLI のインストールと使用開始については、gcloud CLI をインストールするをご覧ください。Cloud Shell の起動については、Cloud Shell を使用するをご覧ください。

次の gcloud beta sql instances describe コマンドを使用して、読み取りプールの説明を取得します。

      gcloud beta sql instances describe READ_POOL_NAME
    

次のように置き換えます。

  • READ_POOL_NAME: 説明する読み取りプールの名前。

IP アドレスとノード情報を含むレスポンスの例は次のようになります。

      ...
      connectionName: my-project:us-central1:read-pool
      ipAddresses:
      - ipAddress: 10.3.0.108
        type: PRIVATE
      nodeCount: 2
      nodes:
      - dnsName: c5bdacb09ffc.j10o8yqc7pve.us-central1.sql.goog.
        gceZone: us-central1-f
        ipAddresses:
        - ipAddress: 10.3.0.112
          type: PRIVATE
        name: read-pool-node-01
        state: RUNNABLE
      - dnsName: 8f77c454d6b2.j10o8yqc7pve.us-central1.sql.goog.
        gceZone: us-central1-c
        ipAddresses:
        - ipAddress: 10.3.0.113
          type: PRIVATE
        name: read-pool-node-02
        state: RUNNABLE
    

読み取りプールの詳細を表示するには、 get メソッドを使用します。

リクエストのデータを使用する前に、次のように置き換えます。

  • PROJECT: 読み取りプールが存在するプロジェクトの名前。
  • READ_POOL_NAME: 読み取りプールの名前(my-read-pool など)。

HTTP メソッドと URL:

GET https://sqladmin.googleapis.com/v1/projects/PROJECT/instances/READ_POOL_NAME

リクエストを送信するには、次のいずれかのオプションを展開します。

次のコマンドを実行します。

curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://sqladmin.googleapis.com/v1/projects/PROJECT/instances/READ_POOL_NAME"

次のコマンドを実行します。

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://sqladmin.googleapis.com/v1/projects/PROJECT/instances/READ_POOL_NAME" | Select-Object -Expand Content

次のような JSON レスポンスが返されます。

{
  [...],
  "connectionName": "my-project:us-central1:read-pool",
  "ipAddresses": [
    {
      "type": "PRIVATE",
      "ipAddress": "10.3.0.108"
    }
  ],
  "nodeCount": 2,
  "nodes": [
    {
      "ipAddresses": [
        {
          "type": "PRIVATE",
          "ipAddress": "10.3.0.112"
        }
      ],                                                                                                                 
      "name": "read-pool-node-01",
      "gceZone": "us-central1-f",
      "dnsName": "c5bdacb09ffc.j10o8yqc7pve.us-central1.sql.goog.",
      "state": "RUNNABLE"
    },
    {
      "ipAddresses": [
        {
          "type": "PRIVATE",
          "ipAddress": "10.3.0.113"
        }
      ],
      "name": "read-pool-node-02",
      "gceZone": "us-central1-c",
      "dnsName": "8f77c454d6b2.j10o8yqc7pve.us-central1.sql.goog.",
      "state": "RUNNABLE"
    }
  ]
}

読み取りプールの詳細を表示するには、 get メソッドを使用します。

リクエストのデータを使用する前に、次のように置き換えます。

  • PROJECT: 読み取りプールが存在するプロジェクトの名前。
  • READ_POOL_NAME: 読み取りプールの名前(my-read-pool など)。

HTTP メソッドと URL:

GET https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT/instances/READ_POOL_NAME

リクエストを送信するには、次のいずれかのオプションを展開します。

次のコマンドを実行します。

curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT/instances/READ_POOL_NAME"

次のコマンドを実行します。

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT/instances/READ_POOL_NAME" | Select-Object -Expand Content

次のような JSON レスポンスが返されます。

{
  [...],
  "connectionName": "my-project:us-central1:read-pool",
  "ipAddresses": [
    {
      "type": "PRIVATE",
      "ipAddress": "10.3.0.108"
    }
  ],
  "nodeCount": 2,
  "nodes": [
    {
      "ipAddresses": [
        {
          "type": "PRIVATE",
          "ipAddress": "10.3.0.112"
        }
      ],                                                                                                                 
      "name": "read-pool-node-01",
      "gceZone": "us-central1-f",
      "dnsName": "c5bdacb09ffc.j10o8yqc7pve.us-central1.sql.goog.",
      "state": "RUNNABLE"
    },
    {
      "ipAddresses": [
        {
          "type": "PRIVATE",
          "ipAddress": "10.3.0.113"
        }
      ],
      "name": "read-pool-node-02",
      "gceZone": "us-central1-c",
      "dnsName": "8f77c454d6b2.j10o8yqc7pve.us-central1.sql.goog.",
      "state": "RUNNABLE"
    }
  ]
}

読み取りプール ノードを追加または削除する

次の手順では、読み取りプール内の読み取りプールノードの数を変更して、読み取りプールをスケールインまたはスケールアウトします。操作には制限が適用されます。詳細については、読み取りプールの制限事項をご覧ください。

gcloudREST v1REST v1beta4

gcloud CLI のインストールと使用開始については、gcloud CLI をインストールするをご覧ください。Cloud Shell の起動については、Cloud Shell を使用するをご覧ください。

次の gcloud beta sql instances patch コマンドを使用して、読み取りプールをスケーリングします。

      gcloud beta sql instances patch READ_POOL_NAME \
      --node-count=NODE_COUNT
    

次のように置き換えます。

  • READ_POOL_NAME: 読み取りプールの名前。
  • NODE_COUNT: 読み取りプールに必要な読み取りプール ノードの数。120 の数値を選択します。

patch メソッドを使用して、リードプール内のリードプール ノードの数を変更することで、リードプールをスケールインまたはスケールアウトします。

リクエストのデータを使用する前に、次のように置き換えます。

  • PROJECT: 読み取りプールが存在するプロジェクトの名前。
  • NODE_COUNT: 読み取りプールに必要な読み取りプール ノードの数。120 の数値を選択します。

HTTP メソッドと URL:

PATCH https://sqladmin.googleapis.com/v1/projects/PROJECT/instances/READ_POOL_NAME

リクエストの本文(JSON):

{
  "nodeCount": NODE_COUNT
}

リクエストを送信するには、次のいずれかのオプションを展開します。

リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。

curl -X PATCH \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://sqladmin.googleapis.com/v1/projects/PROJECT/instances/READ_POOL_NAME"

リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method PATCH `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://sqladmin.googleapis.com/v1/projects/PROJECT/instances/READ_POOL_NAME" | Select-Object -Expand Content

次のような JSON レスポンスが返されます。

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT/instances/READ_POOL_NAME",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2020-01-21T22:43:37.981Z",
  "operationType": "UPDATE",
  "name": "OPERATION_ID",
  "targetId": "READ_POOL_NAME",
  "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT/operations/OPERATION_ID",
  "targetProject": "PROJECT"
}

patch メソッドを使用して、リードプール内のリードプール ノードの数を変更することで、リードプールをスケールインまたはスケールアウトします。

リクエストのデータを使用する前に、次のように置き換えます。

  • PROJECT: 読み取りプールが存在するプロジェクトの名前。
  • NODE_COUNT: 読み取りプールに必要な読み取りプール ノードの数。120 の数値を選択します。

HTTP メソッドと URL:

PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT/instances/READ_POOL_NAME

リクエストの本文(JSON):

{
  "nodeCount": NODE_COUNT
}

リクエストを送信するには、次のいずれかのオプションを展開します。

リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。

curl -X PATCH \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT/instances/READ_POOL_NAME"

リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method PATCH `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT/instances/READ_POOL_NAME" | Select-Object -Expand Content

次のような JSON レスポンスが返されます。

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT/instances/READ_POOL_NAMEINSTANCE_ID",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2020-01-21T22:43:37.981Z",
  "operationType": "UPDATE",
  "name": "OPERATION_ID",
  "targetId": "READ_POOL_NAME",
  "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT/operations/OPERATION_ID",
  "targetProject": "PROJECT"
}

読み取りプール構成を編集する

次の手順では、読み取りプールの構成を編集する方法について説明します。詳細については、インスタンスの設定についてインスタンスを編集するをご覧ください。

gcloudREST v1REST v1beta4

gcloud CLI のインストールと使用開始については、gcloud CLI をインストールするをご覧ください。Cloud Shell の起動については、Cloud Shell を使用するをご覧ください。

次の gcloud beta sql instances patch コマンドを使用して、マシンタイプの変更などにより、読み取りプールを垂直方向にスケーリングします。

      gcloud beta sql instances patch READ_POOL_NAME \
      --tier=TIER
    

次のように置き換えます。

  • READ_POOL_NAME: 読み取りプールの名前。
  • TIER: 読み取りプールの各読み取りプールノードに適用するマシンタイプ(db-perf-optimized-N-8 など)。

patch メソッドを使用して、読み取りプール ノードの構成を変更します。設定は、読み取りプール内のすべての読み取りプールノードに均一に適用されます。

リクエストのデータを使用する前に、次のように置き換えます。

  • PROJECT: 読み取りプールが存在するプロジェクトの名前。
  • TIER: 読み取りプールの各読み取りプールノードに使用するマシンタイプ(db-perf-optimized-N-4 など)。
  • READ_POOL_NAME: 読み取りプールの名前(my-read-pool など)。

HTTP メソッドと URL:

PATCH https://sqladmin.googleapis.com/v1/projects/PROJECT/instances/READ_POOL_NAME

リクエストの本文(JSON):

{
  "settings": {
    "tier": "TIER"
  }
}

リクエストを送信するには、次のいずれかのオプションを展開します。

リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。

curl -X PATCH \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://sqladmin.googleapis.com/v1/projects/PROJECT/instances/READ_POOL_NAME"

リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method PATCH `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://sqladmin.googleapis.com/v1/projects/PROJECT/instances/READ_POOL_NAME" | Select-Object -Expand Content

次のような JSON レスポンスが返されます。

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT/instances/READ_POOL_NAME",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2020-01-21T22:43:37.981Z",
  "operationType": "UPDATE",
  "name": "OPERATION_ID",
  "targetId": "READ_POOL_NAME",
  "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT/operations/OPERATION_ID",
  "targetProject": "PROJECT"
}

patch メソッドを使用して、読み取りプール ノードの構成を変更します。設定は、読み取りプール内のすべての読み取りプールノードに均一に適用されます。

リクエストのデータを使用する前に、次のように置き換えます。

  • PROJECT: 読み取りプールが存在するプロジェクトの名前。
  • TIER: 読み取りプールの各読み取りプールノードに使用するマシンタイプ(db-perf-optimized-N-4 など)。
  • READ_POOL_NAME: 読み取りプールの名前(my-read-pool など)。

HTTP メソッドと URL:

PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT/instances/READ_POOL_NAME

リクエストの本文(JSON):

{
  "settings": {
    "tier": "TIER"
  }
}

リクエストを送信するには、次のいずれかのオプションを展開します。

リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。

curl -X PATCH \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT/instances/READ_POOL_NAME"

リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method PATCH `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT/instances/READ_POOL_NAME" | Select-Object -Expand Content

次のような JSON レスポンスが返されます。

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT/instances/READ_POOL_NAME",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2020-01-21T22:43:37.981Z",
  "operationType": "UPDATE",
  "name": "OPERATION_ID",
  "targetId": "READ_POOL_NAME",
  "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT/operations/OPERATION_ID",
  "targetProject": "PROJECT"
}

読み取りプールに接続する

読み取りプールに接続する方法はいくつかあります。次の手順では、同じ VPC ネットワーク内に VM を作成して接続元として機能させ、プライベート IP アドレスを持つ読み取りプールに接続する方法を示します。

Cloud SQL インスタンスへの接続を構成する他の方法については、Cloud SQL 接続についてをご覧ください。通常、接続方法では、読み取りプール情報を表示するで説明されているように、まずインスタンスの IP アドレスまたは接続名を取得する必要があります。読み取りプールは、他の Cloud SQL インスタンスで使用可能な接続方法のほとんどをサポートしていますが、いくつかの制限があります。

Cloud SQL Auth Proxy または Cloud SQL コネクタを使用して接続する場合は、必ず最新バージョンに更新してください。読み取りプールのサポートに必要な最小バージョンは次のとおりです。

  • Cloud SQL Auth Proxy: v2.15.2
  • Cloud SQL Python コネクタ: v1.18.0
  • Cloud SQL Go コネクタ: v1.16.0
  • Cloud SQL Node コネクタ: v1.7.0
  • Cloud SQL Java コネクタ: v1.24.0
Console

読み取りプールに接続する手順は次のとおりです。

  1. Google Cloud コンソールで Cloud SQL の [インスタンス] ページに移動します。

    Cloud SQL の [インスタンス] に移動

    インスタンスの概要ページが表示されます。新しい読み取りプールをクリックして、プライベート IP アドレスを含む詳細を表示します。[このインスタンスに接続] セクションで、インスタンスの接続名をコピーして保存します。connection name の形式は projectID:region:instanceID です。後で Cloud SQL Auth Proxy を起動する際に、この connection name を使用します。
  2. Compute Engine VM を作成します
  3. Compute Engine VM に対して 2 つの SSH 接続を開きます。これらは、後続のステップで Cloud SQL Auth Proxy を実行し、データベース クライアントを実行するために使用されます。
  4. クライアントをインストールします
  5. Cloud SQL Auth Proxy をインストールします
  6. Cloud SQL Auth Proxy を起動します
  7. Cloud SQL インスタンスに接続します

詳細については、プライベート IP を使用して Cloud SQL インスタンスに接続するをご覧ください。

リードプールを削除する

gcloudREST v1REST v1beta4

gcloud CLI のインストールと使用開始については、gcloud CLI をインストールするをご覧ください。Cloud Shell の起動については、Cloud Shell を使用するをご覧ください。

次の gcloud sql instances delete コマンドを使用して、読み取りプールを削除します。

      gcloud sql instances delete READ_POOL_NAME
    

次のように置き換えます。

  • READ_POOL_NAME: 削除する読み取りプールの名前。

読み取りプールを削除するには、 delete メソッドを使用します。

リクエストのデータを使用する前に、次のように置き換えます。

  • PROJECT: 読み取りプールが存在するプロジェクトの名前。
  • READ_POOL_NAME: 読み取りプールの名前(my-read-pool など)。

HTTP メソッドと URL:

DELETE https://sqladmin.googleapis.com/v1/projects/PROJECT/instances/READ_POOL_NAME

リクエストを送信するには、次のいずれかのオプションを展開します。

次のコマンドを実行します。

curl -X DELETE \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://sqladmin.googleapis.com/v1/projects/PROJECT/instances/READ_POOL_NAME"

次のコマンドを実行します。

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method DELETE `
-Headers $headers `
-Uri "https://sqladmin.googleapis.com/v1/projects/PROJECT/instances/READ_POOL_NAME" | Select-Object -Expand Content

次のような JSON レスポンスが返されます。

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT/instances/READ_POOL_NAME",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2020-01-21T22:43:37.981Z",
  "operationType": "DELETE",
  "name": "OPERATION_ID",
  "targetId": "READ_POOL_NAME",
  "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT/operations/OPERATION_ID",
  "targetProject": "PROJECT"
}

読み取りプールを削除するには、 delete メソッドを使用します。

リクエストのデータを使用する前に、次のように置き換えます。

  • PROJECT: 読み取りプールが存在するプロジェクトの名前。
  • READ_POOL_NAME: 読み取りプールの名前(my-read-pool など)。

HTTP メソッドと URL:

DELETE https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT/instances/READ_POOL_NAME

リクエストを送信するには、次のいずれかのオプションを展開します。

次のコマンドを実行します。

curl -X DELETE \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT/instances/READ_POOL_NAME"

次のコマンドを実行します。

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method DELETE `
-Headers $headers `
-Uri "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT/instances/READ_POOL_NAME" | Select-Object -Expand Content

次のような JSON レスポンスが返されます。

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT/instances/READ_POOL_NAME",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2020-01-21T22:43:37.981Z",
  "operationType": "DELETE",
  "name": "OPERATION_ID",
  "targetId": "READ_POOL_NAME",
  "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT/operations/OPERATION_ID",
  "targetProject": "PROJECT"
}

次のステップ