建立及管理讀取集區

本頁說明如何為大型讀取工作負載建立及管理讀取集區

事前準備

  1. 讀取集區包含主要執行個體的副本。如果尚未建立 Cloud SQL Enterprise Plus 版本的主要執行個體,請先建立。雖然讀取集區支援公開 IP 連線,但為了本指南的目的,請建立具有私人 IP (PSA) 連線的主要執行個體。如要進一步瞭解主要執行個體和複製作業,請參閱「關於 Cloud SQL 中的複製作業」。
  2. 建立主要執行個體後,請選擇根使用者的密碼,並執行下列指令,在主要執行個體上設定密碼。請儲存這個密碼,稍後連線至讀取集區時會用到。
  3.     gcloud --project=PROJECT \
        sql users set-password root --host=% \
        --instance=PRIMARY_INSTANCE_NAME --prompt-for-password
      

    請將下列項目改為對應的值:

    • PROJECT:您要讓主要執行個體和讀取集區所在的專案名稱。
    • PRIMARY_INSTANCE_NAME:主要執行個體的名稱。

建立讀取集區

gcloud

如要瞭解如何安裝及開始使用 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

REST v1

使用執行個體資源的 insert 方法,建立具有多個讀取集區節點的讀取集區。databaseVersion 屬性必須與主要屬性相同。

使用任何要求資料之前,請先替換以下項目:

  • PROJECT:您要讓主要執行個體和讀取集區所在的專案名稱。
  • REGION:讀取集區的區域,例如 us-east1。 地區必須與主要執行個體相同。
  • TIER:您想在讀取集區中,為每個讀取集區節點使用的機器類型,例如 db-perf-optimized-N-4
  • PRIMARY_INSTANCE_NAME:主要執行個體的名稱。
  • READ_POOL_NAME:您要用於讀取集區的名稱,例如 my-read-pool
  • DATABASE_VERSION:要使用的資料庫版本。 例如:MYSQL_8_0_37
  • 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"
    }
  }
}

如要傳送要求,請展開以下其中一個選項:

您應該會收到如下的 JSON 回應:

REST v1beta4

使用執行個體資源的 insert 方法,建立具有多個讀取集區節點的讀取集區。databaseVersion 屬性必須與主要屬性相同。

使用任何要求資料之前,請先替換以下項目:

  • PROJECT:您要讓主要執行個體和讀取集區所在的專案名稱。
  • REGION:讀取集區的區域,例如 us-east1。 地區必須與主要執行個體相同。
  • TIER:您想在讀取集區中,為每個讀取集區節點使用的機器類型,例如 db-perf-optimized-N-4
  • PRIMARY_INSTANCE_NAME:主要執行個體的名稱。
  • READ_POOL_NAME:您要用於讀取集區的名稱,例如 my-read-pool
  • DATABASE_VERSION:要使用的資料庫版本。 例如:MYSQL_8_0_37
  • 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"
    }
  }
}

如要傳送要求,請展開以下其中一個選項:

您應該會收到如下的 JSON 回應:

將唯讀副本轉換為讀取集區

您可以指定集區中的節點數量,將現有的 Cloud SQL Enterprise Plus 版本唯讀副本轉換為唯讀集區。在轉換過程中,副本 IP 會成為讀取集區 IP (讀取端點),因此現有用戶端可以連線至集區,不必重新設定。

新建立的讀取集區節點會與原始唯讀備用資源使用相同的機器類型和設定。如要變更這項機型或設定,必須另外執行作業。這項操作僅支援可用區唯讀備用資源。如要將高可用性 (HA) 唯讀副本轉換為唯讀集區,必須先轉換為區域唯讀副本。

詳情請參閱「編輯讀取集區設定」。

gcloud

如要瞭解如何安裝及開始使用 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 之間的數字。

REST v1

使用執行個體資源的 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
}

如要傳送要求,請展開以下其中一個選項:

您應該會收到如下的 JSON 回應:

REST v1beta4

使用執行個體資源的 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
}

如要傳送要求,請展開以下其中一個選項:

您應該會收到如下的 JSON 回應:

將讀取集區轉換為唯讀副本

gcloud

如要瞭解如何安裝及開始使用 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:要轉換的讀取集區名稱。

REST v1

使用執行個體資源的 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"
}

如要傳送要求,請展開以下其中一個選項:

您應該會收到如下的 JSON 回應:

REST v1beta4

使用執行個體資源的 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"
}

如要傳送要求,請展開以下其中一個選項:

您應該會收到如下的 JSON 回應:

查看讀取集區資訊

gcloud

如要瞭解如何安裝及開始使用 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
    

REST v1

使用 get 方法查看讀取集區詳細資料。

使用任何要求資料之前,請先替換以下項目:

  • PROJECT:讀取集區所在的專案名稱。
  • READ_POOL_NAME:讀取集區的名稱,例如 my-read-pool

HTTP 方法和網址:

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

如要傳送要求,請展開以下其中一個選項:

您應該會收到如下的 JSON 回應:

REST v1beta4

使用 get 方法查看讀取集區詳細資料。

使用任何要求資料之前,請先替換以下項目:

  • PROJECT:讀取集區所在的專案名稱。
  • READ_POOL_NAME:讀取集區的名稱,例如 my-read-pool

HTTP 方法和網址:

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

如要傳送要求,請展開以下其中一個選項:

您應該會收到如下的 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

如要瞭解如何安裝及開始使用 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 之間的數字。

REST v1

使用 patch 方法,修改讀取集區中的讀取集區節點數量,即可調度讀取集區。

使用任何要求資料之前,請先替換以下項目:

  • PROJECT:讀取集區所在的專案名稱。
  • NODE_COUNT:要在讀取集區中使用的讀取集區節點數量。選擇介於 120 之間的數字。

HTTP 方法和網址:

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

JSON 要求主體:

{
  "nodeCount": NODE_COUNT
}

如要傳送要求,請展開以下其中一個選項:

您應該會收到如下的 JSON 回應:

REST v1beta4

使用 patch 方法,修改讀取集區中的讀取集區節點數量,即可調度讀取集區。

使用任何要求資料之前,請先替換以下項目:

  • PROJECT:讀取集區所在的專案名稱。
  • NODE_COUNT:要在讀取集區中使用的讀取集區節點數量。選擇介於 120 之間的數字。

HTTP 方法和網址:

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

JSON 要求主體:

{
  "nodeCount": NODE_COUNT
}

如要傳送要求,請展開以下其中一個選項:

您應該會收到如下的 JSON 回應:

編輯讀取集區設定

下列步驟說明如何編輯讀取集區設定。如需更多詳細資訊,請參閱「關於執行個體設定」和「編輯執行個體」。

gcloud

如要瞭解如何安裝及開始使用 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

REST v1

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

如要傳送要求,請展開以下其中一個選項:

您應該會收到如下的 JSON 回應:

REST v1beta4

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

如要傳送要求,請展開以下其中一個選項:

您應該會收到如下的 JSON 回應:

連線至讀取集區

連線至讀取集區的方法有很多種,下列步驟說明其中一種方法,也就是在同一個 VPC 網路中建立 VM,做為連線來源,藉此連線至具有私人 IP 位址的讀取集區。

如要進一步瞭解如何設定 Cloud SQL 執行個體的連線,請參閱「關於 Cloud SQL 連線」。如要使用連線方式,通常需要先取得執行個體的 IP 位址或連線名稱,如「查看讀取集區資訊」一文所述。讀取集區支援其他 Cloud SQL 執行個體的大部分連線方法,但有一些限制

如果使用 Cloud SQL 驗證 Proxy 或 Cloud SQL 連接器連線,請務必更新至最新版本。如要支援讀取集區,最低版本需求如下:

  • Cloud SQL 驗證 Proxy:v2.15.2
  • Cloud SQL Python 連接器:v1.18.0
  • Cloud SQL Go 連接器:v1.16.0
  • Cloud SQL Node 連接器:1.7.0 版
  • Cloud SQL Java 連接器:v1.24.0

控制台

如要連線至讀取集區,請完成下列步驟:

  1. 前往 Google Cloud 控制台的「Cloud SQL Instances」頁面。

    前往 Cloud SQL 執行個體

    系統會將您帶往執行個體的「總覽」頁面。 按一下新的讀取集區,即可查看詳細資料,包括私有 IP 位址。在「連線至這個執行個體」部分,複製並儲存執行個體的「連線名稱」connection name 的格式為 projectID:region:instanceID。稍後啟動 Cloud SQL 驗證 Proxy 時,會用到這個 connection name
  2. 建立 Compute Engine VM
  3. 開啟兩個與 Compute Engine VM 的 SSH 連線。後續步驟會使用這些值執行 Cloud SQL Auth Proxy 和資料庫用戶端。
  4. 安裝用戶端
  5. 安裝 Cloud SQL 驗證 Proxy
  6. 啟動 Cloud SQL 驗證 Proxy
  7. 連線至 Cloud SQL 執行個體

詳情請參閱「使用私人 IP 連線至 Cloud SQL 執行個體」。

刪除讀取集區

gcloud

如要瞭解如何安裝及開始使用 gcloud CLI,請參閱「安裝 gcloud CLI」。如要瞭解如何啟動 Cloud Shell,請參閱「使用 Cloud Shell」。

使用下列 gcloud sql instances delete 指令刪除讀取集區:

      gcloud sql instances delete READ_POOL_NAME
    

請將下列項目改為對應的值:

  • READ_POOL_NAME:要刪除的讀取集區名稱。

REST v1

使用 delete 方法刪除讀取集區。

使用任何要求資料之前,請先替換以下項目:

  • PROJECT:讀取集區所在的專案名稱。
  • READ_POOL_NAME:讀取集區的名稱,例如 my-read-pool

HTTP 方法和網址:

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

如要傳送要求,請展開以下其中一個選項:

您應該會收到如下的 JSON 回應:

REST v1beta4

使用 delete 方法刪除讀取集區。

使用任何要求資料之前,請先替換以下項目:

  • PROJECT:讀取集區所在的專案名稱。
  • READ_POOL_NAME:讀取集區的名稱,例如 my-read-pool

HTTP 方法和網址:

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

如要傳送要求,請展開以下其中一個選項:

您應該會收到如下的 JSON 回應:

後續步驟