创建和管理读取池

本页介绍了如何为大量读取工作负载创建和管理读取池

准备工作

  1. 读取池包含主实例的副本。如果您尚未创建主实例,请创建一个 Cloud SQL 企业 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:主实例的名称。

创建读取池

如需了解如何安装和开始使用 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 方法和网址:

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 方法和网址:

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 企业 Plus 版读取副本转换为读取池。在此转换过程中,副本 IP 将成为读取池 IP(读取端点),因此现有客户端无需重新配置即可连接到该池。

新创建的读取池节点将具有与原始读取副本相同的机器类型和配置。如需更改此机器类型或配置,您需要执行单独的操作。只有可用区级读取副本支持此操作。如需将高可用性 (HA) 读取副本转换为读取池,您必须先将其转换为可用区读取副本。

如需了解详情,请参阅修改读取池配置

如需了解如何安装和开始使用 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 方法和网址:

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 方法和网址:

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"
}

将读取池转换为读取副本

如需了解如何安装和开始使用 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 方法和网址:

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 方法和网址:

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"
}

查看读取池信息

如需了解如何安装和开始使用 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 方法和网址:

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 方法和网址:

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"
    }
  ]
}

添加或移除读取池节点

以下步骤通过修改读取池中的读取池节点数量来扩缩或缩减读取池。存在一些操作限制。如需了解详情,请参阅读取池限制

如需了解如何安装和开始使用 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 方法和网址:

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 方法和网址:

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"
}

修改读取池配置

以下步骤展示了如何修改读取池配置。如需了解详情,请参阅实例设置简介修改实例

如需了解如何安装和开始使用 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 方法和网址:

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 方法和网址:

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 网络中创建一个虚拟机来用作连接来源,以便使用专用 IP 地址连接到读取池。

如需详细了解配置与 Cloud SQL 实例的连接的其他方式,请参阅 Cloud SQL 连接简介。连接方法通常要求您先获取实例的 IP 地址或连接名称,如查看读取池信息中所述。读取池支持适用于其他 Cloud SQL 实例的大多数连接方法,但存在一些限制

如果您使用 Cloud SQL Auth 代理或 Cloud SQL 连接器进行连接,请务必更新到最新版本。对于读取池支持,所需的最低版本包括:

  • Cloud SQL Auth 代理: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
控制台

如需连接到读取池,请完成以下步骤:

  1. 在 Google Cloud 控制台中,转到 Cloud SQL 实例页面。

    转到“Cloud SQL 实例”

    您将转到实例“概览”页。 点击进入新的读取池,查看包括其专用 IP 地址在内的详细信息。在连接到此实例部分中,复制并保存实例的连接名称connection name 的格式为 projectID:region:instanceID。稍后您将在启动 Cloud SQL Auth 代理时使用此 connection name
  2. 创建 Compute Engine 虚拟机
  3. 打开与 Compute Engine 虚拟机的两个 SSH 连接。这些信息将在后续步骤中用于运行 Cloud SQL Auth 代理和数据库客户端。
  4. 安装客户端
  5. 安装 Cloud SQL Auth 代理
  6. 启动 Cloud SQL Auth 代理
  7. 连接到 Cloud SQL 实例

如需了解详情,请参阅使用专用 IP 连接到 Cloud SQL 实例

删除读取池

如需了解如何安装和开始使用 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 方法和网址:

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 方法和网址:

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"
}

后续步骤