設定代管連線集區

如要擴充 AlloyDB for PostgreSQL 工作負載、吸收突發的連線高峰,以及縮短連線延遲時間,可以啟用代管連線集區。代管連線集區會維護預先建立的伺服器連線集區,並在這些連線上動態多工處理傳入的用戶端要求,而不是為每項資料庫作業開啟及關閉後端連線。

應用程式不會直接連線至資料庫後端,而是連線至集區,這樣可以縮短連線時間,並提高讀寫工作負載的可擴充性。雖然代管連線集區可用於任何交易工作負載,但最適合使用短期連線或連線量激增的應用程式。

事前準備

代管連線集區也支援與 AlloyDB Auth Proxy 或 AlloyDB 語言連接器建立連線。

必要的角色

如要取得啟用及使用代管連線集區所需的權限,請要求管理員授予 AlloyDB 執行個體的 AlloyDB 管理員 (roles/alloydb.admin) IAM 角色。如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。

這個預先定義的角色具備 alloydb.instances.update 權限,可啟用及使用代管連線集區。

您或許還可透過自訂角色或其他預先定義的角色取得這項權限。

進階設定選項

AlloyDB 代管連線集區支援下列進階集區設定選項。您可以使用 Google Cloud 控制台、gcloud CLI 或 AlloyDB API,在執行個體層級設定這些項目,自訂代管連線集區,滿足執行個體的需求。

設定名稱 說明
連線模式
(connection-pooling-pool-mode)
連線模式可選取交易 (預設) 或工作階段。

交易 (transaction):
在交易層級集區連線。在交易期間,伺服器連線會指派給用戶端。交易完成後,伺服器連線會放回集區。

工作階段 (session):
在工作階段層級集區連線。在用戶端保持連線的整個期間,系統會為其指派伺服器連線。用戶端中斷連線後,伺服器連線會放回集區。
集區大小上限
(connection-pooling-max-pool-size)
每個使用者和資料庫組合的連線集區大小上限。這個值可以介於 1 到 262,042 個連線之間,預設值為 50 個連線。
集區大小下限:
(connection-pooling-min-pool-size)
連線集區的大小下限。這個值可以介於 0 到 262,042 個連線之間,預設值為 0 個連線。
用戶端連線數上限
(connection-pooling-max-client-connections)
同時允許的用戶端連線數量上限。這個值可以介於 1 到 262,042 個連線之間,預設值為 5000 個連線。
用戶端連線閒置逾時時間(秒)
(connection-pooling-client-connection-idle-timeout)
用戶端連線閒置多久後會逾時。這個值介於 0 到 2,147,483 秒之間,預設值為 0 秒。
伺服器連線閒置逾時時間(秒)
(connection-pooling-server-idle-timeout)
伺服器連線閒置多久後會逾時。這個值可以介於 0 到 2,147,483 秒之間,預設值為 600 秒。
查詢等待逾時時間(秒)
(connection-pooling-query-wait-timeout)
查詢等候逾時的時間。這個值可以介於 0 到 2,147,483 秒之間,預設值為 120 秒。
準備就緒的陳述式數量上限:
(connection-pooling-max-prepared-statements)
在交易集區模式中,可傳送的預備陳述式指令數量上限。這個值可以介於 0 到 262,042 之間,預設值為 0。
忽略啟動參數
(connection-pooling-ignore-startup-parameters)
以半形逗號分隔的啟動參數清單,預設情況下,如果啟動封包未追蹤這些參數,集區程式會忽略這些參數。預設值為 extra_float_digits。
伺服器生命週期(秒)
(connection-pooling-server-lifetime)
伺服器連線未使用的時間上限,超過後代管連線集區就會關閉連線。這個值介於 0 到 2,147,483 秒之間,預設值為 3600 秒。
統計資料使用者
(connection-pooling-stats-users)
以半形逗號分隔的資料庫使用者清單,這些使用者有權連線至統計資料控制台。您可以使用 Google Cloud CLI 或 AlloyDB API 設定這項參數。授權使用者可以存取進階指標,這些指標會保存在每個集區器的 alloydb_mcp_stats_{pooler_id} 資料庫中。

根據預設,代管連線集區會啟動與 AlloyDB 伺服器的連線。建立並驗證用戶端連線後,代管連線集區可能會建立一或多個伺服器連線,確保集區大小符合所選設定。接著,系統會為用戶端連線指派可用的伺服器連線。伺服器連線會維持到明確關閉,或閒置時間超過閒置伺服器連線逾時時間為止。

啟用代管連線集區後,AlloyDB Auth Proxy 伺服器的連線也會使用獨立集區,其中只包含已啟用 AlloyDB Auth Proxy 的集區連線。

啟用代管連線集區

您可以為任何現有或新的執行個體啟用代管連線集區。

為新的主要執行個體啟用

如要建立新的主要執行個體,並啟用代管連線集區,請參閱「建立主要執行個體」。您可以使用Google Cloud 控制台、Google Cloud CLI 或 AlloyDB API,為執行個體啟用代管連線集區。

為新的讀取集區執行個體啟用

如要建立新的讀取集區執行個體,並啟用代管連線集區,請參閱「建立讀取集區執行個體」。您可以使用Google Cloud 控制台、Google Cloud CLI 或 AlloyDB API,為執行個體啟用代管連線集區。

為現有執行個體啟用

您可以使用Google Cloud 控制台、Google Cloud CLI 或 AlloyDB API,為現有執行個體啟用代管連線集區。

控制台

  1. 前往「Clusters」(叢集) 頁面。

    前往叢集

  2. 在「Resource name」(資源名稱) 欄中,按一下叢集。

  3. 在「總覽」頁面,前往「叢集中的執行個體」。

  4. 按一下「編輯主要執行個體」或「編輯讀取集區」。

  5. 在「Managed connection pool」(代管連線集區) 下方,勾選「Enable managed connection pool」(啟用代管連線集區) 核取方塊。

  6. 選用:如要設定代管連線集區選項,請按一下「Advanced pooling options」(進階集區選項)。

    您可以自訂代管連線集區選項,滿足執行個體的需求。詳情請參閱「進階設定選項」。

  7. 按一下 [儲存變更]。

gcloud

如要為現有的主要或讀取集區執行個體啟用代管連線集區,請使用下列 gcloud alloydb instances update 指令:

gcloud alloydb instances update INSTANCE_ID \
  --project=PROJECT_ID \
  --region=REGION_ID \
  --cluster=CLUSTER_ID \
  --enable-connection-pooling

更改下列內容:

  • INSTANCE_ID:要啟用代管連線集區的 AlloyDB 執行個體 ID。
  • PROJECT_ID:專案 ID。
  • REGION_ID:區域 ID。
  • CLUSTER_ID:叢集 ID。

啟用代管連線集區後,您可以設定進階選項,根據執行個體需求自訂代管連線集區。如要進一步瞭解如何設定選項,請參閱「修改執行個體的代管連線集區」。

REST

如要為現有的主要或讀取集區執行個體啟用代管連線集區,請使用下列指令並設定 connectionPoolConfig:

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

  • PROJECT_ID:專案 ID。
  • LOCATION_ID:叢集所在區域的 ID。
  • CLUSTER_ID:叢集 ID。開頭須為小寫英文字母,可以使用小寫英文字母、數字和連字號。
  • INSTANCE_ID:執行個體的 ID。

HTTP 方法和網址:

PATCH https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/clusters/CLUSTER_ID/instances/INSTANCE_ID

JSON 要求主體:

{
  "connectionPoolConfig": {
    "enabled": true
  }
}

連線至代管連線集區

連線至代管連線集區的方式與直接連線至資料庫相同,只是通訊埠不同。代管連線集區會監聽通訊埠 6432。新增至 AlloyDB 執行個體的使用者,都能透過代管連線集區連線。

使用內建驗證機制連線

指令範例會使用內建驗證,將 AlloyDB 執行個體連線至代管連線集區。

psql postgresql://USERNAME:PASSWORD@IP_ADDRESS:6432/postgres

更改下列內容:

  • USERNAME:用於連線至 AlloyDB 執行個體的資料庫使用者名稱。
  • PASSWORD:使用者的密碼。
  • IP_ADDRESS:AlloyDB 執行個體的 IP 位址。

使用 SSL 連線

執行個體 SSL 模式也適用於代管連線集區的所有連線。根據預設,系統只接受 SSL 連線。如要允許未加密的連線,請使用下列 gcloud alloydb instances update 指令,將執行個體 SSL 模式設為 ALLOW_UNENCRYPTED_AND_ENCRYPTED。

gcloud alloydb instances update INSTANCE_ID \
  --project=PROJECT_ID \
  --region=REGION_ID \
  --cluster=CLUSTER_ID \
  --ssl-mode=ALLOW_UNENCRYPTED_AND_ENCRYPTED

使用 IAM 驗證機制連線

您可以透過下列兩種方式之一,使用 IAM 驗證連線至代管連線集區:

查看代管連線集區的統計資料

在 AlloyDB 執行個體啟用代管連線集區後,即可連線至內建的統計資料控制台,查看連線集區的即時詳細資訊。您可以使用私人服務存取權或 Private Service Connect,透過私人 IP 位址存取通訊埠 6432 上的統計資料控制台。統計資料控制台可用於監控使用中或閒置的連線、排解等待時間問題,以及最佳化集區大小。

如要使用統計資料控制台,請按照下列步驟操作:

  1. 根據預設,任何資料庫使用者都無權存取統計資料控制台。您必須使用 Google Cloud CLI 指定可連線的資料庫使用者,將他們加入許可清單,允許存取統計資料控制台。

    如要新增統計資料控制台使用者,請使用 gcloud alloydb instances update 指令:

    gcloud alloydb instances update INSTANCE_ID \
    --project=PROJECT_ID \
    --region=REGION_ID \
    --cluster=CLUSTER_ID \
    --connection-pooling-stats-users=STATS_USERS
    

    更改下列內容:

    • INSTANCE_ID:要授權統計資料控制台使用者的 AlloyDB 執行個體名稱。
    • STATS_USERS:以半形逗號分隔的資料庫使用者名稱清單。
    • PROJECT_ID:專案 ID。
    • REGION_ID:區域 ID。
    • CLUSTER_ID:叢集 ID。
  2. 連線至通訊埠 6432 上的執行個體。每個連線集區執行個體都會在編號不重複的資料庫中,維護自己的指標。為要監控的集區指定相關統計資料庫:

    • 如果是標準集區,請使用 alloydb_mcp_stats_POOLER_ID。ID 為 1,最多為執行個體上執行的集區數量。
    • 如果是 Auth Proxy 集區,請使用 alloydb_mcp_stats_authproxy_pooler1。
    psql postgresql://USERNAME:PASSWORD@IP_ADDRESS:6432/alloydb_mcp_stats_1
    

    更改下列內容:

    • POOLER_ID:連線集區管理工具的 ID。ID 為 1,最多為執行個體上執行的集區數量。
    • USERNAME:用於連線至 AlloyDB 執行個體的資料庫使用者名稱。
    • PASSWORD:使用者的密碼。
    • IP_ADDRESS:AlloyDB 執行個體的 IP 位址。這必須是 Private Service Connect (PSC) 或私人服務存取權 (PSA) 位址。
  3. 連線後,請執行與 PgBouncer 相容的 SHOW 指令來查看指標,例如:

    • SHOW STATS;:顯示每個資料庫的一般統計資料。
    • SHOW POOLS;:列出所有目前連線集區的狀態。
    • SHOW CLIENTS;:顯示目前用戶端連線的相關資訊。

如需可用指令的完整清單,請參閱官方 PgBouncer 說明文件。

修改執行個體的代管連線集區

啟用代管連線集區後,您可以使用進階設定選項,自訂代管連線集區選項,滿足執行個體的需求。這些設定選項稱為「代管連線集區旗標」。詳情請參閱「進階設定選項」。這些選項也適用於 AlloyDB Auth Proxy 集區。

您可以使用 Google Cloud 控制台、Google Cloud CLI 或 AlloyDB API,修改現有執行個體的代管連線集區設定選項。

控制台

  1. 前往「Clusters」(叢集) 頁面。

    前往叢集

  2. 在「Resource Name」(資源名稱) 欄中,按一下叢集。

  3. 在「總覽」頁面,前往「叢集中的執行個體」。

  4. 找到要修改的執行個體,然後按一下「Edit instance」(編輯執行個體) 或「Edit read pool」(編輯讀取集區)。

  5. 在「Managed connection pool」(代管連線集區) 下方,展開「Advanced pooling options」(進階集區選項)。

  6. 修改要更新的進階集區選項。您可以修改下列選項:

    • 連線模式
    • 集區大小上限
    • 集區大小下限
    • 用戶端連線數上限
    • 用戶端連線閒置逾時時間(秒)
    • 伺服器連線閒置逾時時間(秒)
    • 查詢等待逾時時間(秒)
    • 準備就緒的陳述式數量上限
    • 忽略啟動參數
    • 伺服器生命週期(秒)
  7. 按一下「更新執行個體」。

gcloud

如要修改現有執行個體的代管連線集區設定選項,請使用下列 gcloud alloydb instances update 指令:

  gcloud alloydb instances update INSTANCE_ID \
    --project=PROJECT_ID \
    --region=REGION_ID \
    --cluster=CLUSTER_ID \
    { \
      --connection-pooling-pool-mode=CONNECTION_MODE \
      | --connection-pooling-max-pool-size=MAX_POOL_SIZE \
      | --connection-pooling-min-pool-size=MIN_POOL_SIZE \
      | --connection-pooling-max-client-connections=MAX_CLIENT_CONNECTIONS \
      | --connection-pooling-server-idle-timeout=SERVER_IDLE_TIMEOUT_PERIOD \
      | --connection-pooling-query-wait-timeout=QUERY_WAIT_TIMEOUT_PERIOD \
      | --connection-pooling-ignore-startup-parameters=IGNORE_STARTUP_PARAMETERS \
      | --connection-pooling-max-prepared-statements=MAX_PREPARED_STATEMENTS \
      | --connection-pooling-server-lifetime=SERVER_LIFETIME \
      | --connection-pooling-client-connection-idle-timeout=CLIENT_CONNECTION_IDLE_TIMEOUT \
    }

更改下列內容:

  • INSTANCE_ID:要修改代管連線集區選項的 AlloyDB 執行個體名稱。
  • PROJECT_ID:專案 ID。
  • REGION_ID:區域 ID。
  • CLUSTER_ID:叢集 ID。
  • 可設定的選項包括:

    • --connection-pooling-pool-mode:必須是 session 或 transaction。
    • --connection-pooling-max-pool-size
    • --connection-pooling-min-pool-size
    • --connection-pooling-max-client-connections
    • --connection-pooling-server-idle-timeout
    • --connection-pooling-query-wait-timeout
    • --connection-pooling-ignore-startup-parameters
    • --connection-pooling-max-prepared-statements
    • --connection-pooling-server-lifetime
    • --connection-pooling-client-connection-idle-timeout

REST

如要修改現有執行個體的代管連線集區設定選項,請使用下列指令並設定 connectionPoolConfig:

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

  • PROJECT_ID:專案 ID。
  • LOCATION_ID:叢集所在區域的 ID。
  • CLUSTER_ID:叢集 ID。開頭須為小寫英文字母,且只能使用小寫英文字母、數字和連字號。
  • INSTANCE_ID:執行個體的 ID。
  • 可設定的選項包括:

    • POOL_MODE:必須是 session 或 transaction。
    • MAX_POOL_SIZE
    • MIN_POOL_SIZE
    • MAX_CLIENT_CONNECTIONS
    • SERVER_IDLE_TIMEOUT
    • QUERY_WAIT_TIMEOUT
    • IGNORE_STARTUP_PARAMETERS
    • MAX_PREPARED_STATEMENTS
    • SERVER_LIFETIME
    • CLIENT_CONNECTION_IDLE_TIMEOUT
    • STATS_USERS

HTTP 方法和網址:

PATCH https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/clusters/CLUSTER_ID/instances/INSTANCE_ID

JSON 要求主體:

{
  "connectionPoolConfig": {
    "enabled": true,
    "flags": {
      "pool_mode": "POOL_MODE",
      "max_pool_size": "MAX_POOL_SIZE",
      "min_pool_size": "MIN_POOL_SIZE",
      "max_client_connections": "MAX_CLIENT_CONNECTIONS",
      "server_connection_idle_timeout": "SERVER_IDLE_TIMEOUT",
      "query_wait_timeout": "QUERY_WAIT_TIMEOUT",
      "ignore_startup_parameters": "IGNORE_STARTUP_PARAMETERS",
      "max_prepared_statements": "MAX_PREPARED_STATEMENTS",
      "server_lifetime": "SERVER_LIFETIME",
      "client_connection_idle_timeout": "CLIENT_CONNECTION_IDLE_TIMEOUT",
      "stats_users": "STATS_USERS"
    }
  }
}

查看執行個體的代管連線集區狀態

您可以使用 Google Cloud 控制台、Google Cloud CLI 或 AlloyDB API,查看執行個體的代管連線集區狀態。

控制台

  1. 前往「Clusters」(叢集) 頁面。

    前往叢集

  2. 在「Resource Name」(資源名稱) 欄中,按一下叢集。

  3. 在「Overview」(總覽) 頁面中,找出要查看代管連線集區狀態的執行個體。「Managed connection pooling」(代管連線集區) 欄位會顯示啟用狀態。

gcloud

如要查看現有執行個體的代管連線集區狀態,請使用下列 gcloud alloydb instances describe 指令:

gcloud alloydb instances describe INSTANCE_ID \
  --project=PROJECT_ID \
  --region=REGION_ID \
  --cluster=CLUSTER_ID \
  --format="value(connectionPoolConfig.enabled)"

更改下列內容:

  • INSTANCE_ID:要查看代管連線集區狀態的 AlloyDB 執行個體名稱。
  • PROJECT_ID:專案 ID。
  • REGION_ID:區域 ID。
  • CLUSTER_ID:叢集 ID。

如果已啟用代管連線集區,系統會傳回以下回應:

True

REST

如要查看 AlloyDB 執行個體的代管連線集區狀態,請使用下列指令並尋找 connectionPoolConfig:

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

  • PROJECT_ID:專案 ID。
  • LOCATION_ID:叢集所在區域的 ID。
  • CLUSTER_ID:叢集 ID。開頭須為小寫英文字母,且只能使用小寫英文字母、數字和連字號。
  • INSTANCE_ID:執行個體的 ID。

HTTP 方法和網址:

GET https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/clusters/CLUSTER_ID/instances/INSTANCE_ID

停用現有執行個體的代管連線集區

您可以使用Google Cloud 控制台、Google Cloud CLI 或 AlloyDB API,停用現有執行個體的代管連線集區。

控制台

  1. 前往「Clusters」(叢集) 頁面。

    前往叢集

  2. 在「Resource Name」(資源名稱) 欄中,按一下叢集。

  3. 在「總覽」頁面,前往「叢集中的執行個體」。

  4. 找到要停用代管連線集區的執行個體,然後按一下「Edit instance」(編輯執行個體) 或「Edit read pool」(編輯讀取集區)。

  5. 在「Managed connection pool」(代管連線集區) 下方,取消勾選「Enable managed connection pool」(啟用代管連線集區) 核取方塊。

  6. 按一下「更新執行個體」。

gcloud

如要停用現有執行個體的代管連線集區,請使用下列 gcloud alloydb instances update 指令:

gcloud alloydb instances update INSTANCE_ID \
  --project=PROJECT_ID \
  --region=REGION_ID \
  --cluster=CLUSTER_ID \
  --no-enable-connection-pooling

更改下列內容:

  • INSTANCE_ID:要停用代管連線集區的 AlloyDB 執行個體名稱。
  • PROJECT_ID:專案 ID。
  • REGION_ID:區域 ID。
  • CLUSTER_ID:叢集 ID。

REST

如要停用現有執行個體的代管連線集區,請使用下列指令,並將 connectionPoolConfig.enabled 設為 false:

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

  • PROJECT_ID:專案 ID。
  • LOCATION_ID:叢集所在區域的 ID。
  • CLUSTER_ID:叢集 ID。開頭須為小寫英文字母,且只能使用小寫英文字母、數字和連字號。
  • INSTANCE_ID:執行個體的 ID。

HTTP 方法和網址:

PATCH https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/clusters/CLUSTER_ID/instances/INSTANCE_ID

JSON 要求主體:

{
  "connectionPoolConfig": {
    "enabled": false
  }
}

監控代管連線集區

AlloyDB 提供下列指標,協助您監控執行個體上代管連線集區的運作情形。每項指標都會標上集區 ID。您可以使用 Metrics Explorer 查看這些指標。

指標名稱 說明
連線集區數量

/database/conn_pool/num_pools
每個資料庫的連線集區總數。
客戶關係

/database/conn_pool/client_connections
追蹤每個資料庫的用戶端連線數量,並依用戶端連線狀態分組。這項指標包含的狀態如下:
  • active:每個資料庫的有效連線數量,包括沒有任何待處理查詢要求的閒置用戶端。
  • waiting:每個資料庫等待伺服器連線的用戶端數量。
伺服器連線

/database/conn_pool/server_connections
追蹤伺服器連線數量,並依各資料庫的伺服器連線狀態分組。這項指標包含的狀態如下:
  • active:每個資料庫的作用中連線數量。
  • idle:每個資料庫的閒置伺服器連線數量。
平均等待時間

/database/conn_pool/client_connections_avg_wait_time
所有用戶端在等待伺服器時所花費的平均時間,以微秒為單位,按資料庫分組。

詳情請參閱「AlloyDB 指標」。

限制

限制如下:

  • 如果您在交易集區模式中使用代管連線集區,則不支援下列 SQL 功能:
    • SET/RESET
    • LISTEN
    • WITH HOLD CURSOR
    • PREPARE/DEALLOCATE
    • PRESERVE/DELETE ROW 個臨時資料表
    • LOAD
    • 工作階段層級建議鎖定
    • 通訊協定層級的預備計畫
  • 公開 IP 連線不支援代管連線集區。
  • 不支援具備 PostgreSQL REPLICATION 角色的使用者連線。