如要擴充 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,為現有執行個體啟用代管連線集區。
控制台
前往「Clusters」(叢集) 頁面。
在「Resource name」(資源名稱) 欄中,按一下叢集。
在「總覽」頁面,前往「叢集中的執行個體」。
按一下「編輯主要執行個體」或「編輯讀取集區」。
在「Managed connection pool」(代管連線集區) 下方,勾選「Enable managed connection pool」(啟用代管連線集區) 核取方塊。
選用:如要設定代管連線集區選項,請按一下「Advanced pooling options」(進階集區選項)。
您可以自訂代管連線集區選項,滿足執行個體的需求。詳情請參閱「進階設定選項」。
按一下 [儲存變更]。
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 驗證連線至代管連線集區:
使用 OAuth 2.0 權杖進行驗證:使用 gcloud CLI 取得 OAuth 2.0 權杖,並在連線至通訊埠
6432時,將該權杖做為密碼。詳情請參閱「使用 OAuth 2.0 權杖進行驗證」。自動驗證:使用 AlloyDB Auth Proxy 搭配
--auto-iam-authn旗標,或透過 AlloyDB 語言連接器以程式輔助方式啟用 IAM 驗證。
查看代管連線集區的統計資料
在 AlloyDB 執行個體啟用代管連線集區後,即可連線至內建的統計資料控制台,查看連線集區的即時詳細資訊。您可以使用私人服務存取權或 Private Service Connect,透過私人 IP 位址存取通訊埠 6432 上的統計資料控制台。統計資料控制台可用於監控使用中或閒置的連線、排解等待時間問題,以及最佳化集區大小。
如要使用統計資料控制台,請按照下列步驟操作:
根據預設,任何資料庫使用者都無權存取統計資料控制台。您必須使用 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。
連線至通訊埠
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) 位址。
- 如果是標準集區,請使用
連線後,請執行與 PgBouncer 相容的
SHOW指令來查看指標,例如:SHOW STATS;:顯示每個資料庫的一般統計資料。SHOW POOLS;:列出所有目前連線集區的狀態。SHOW CLIENTS;:顯示目前用戶端連線的相關資訊。
如需可用指令的完整清單,請參閱官方 PgBouncer 說明文件。
修改執行個體的代管連線集區
啟用代管連線集區後,您可以使用進階設定選項,自訂代管連線集區選項,滿足執行個體的需求。這些設定選項稱為「代管連線集區旗標」。詳情請參閱「進階設定選項」。這些選項也適用於 AlloyDB Auth Proxy 集區。
您可以使用 Google Cloud 控制台、Google Cloud CLI 或 AlloyDB API,修改現有執行個體的代管連線集區設定選項。
控制台
前往「Clusters」(叢集) 頁面。
在「Resource Name」(資源名稱) 欄中,按一下叢集。
在「總覽」頁面,前往「叢集中的執行個體」。
找到要修改的執行個體,然後按一下「Edit instance」(編輯執行個體) 或「Edit read pool」(編輯讀取集區)。
在「Managed connection pool」(代管連線集區) 下方,展開「Advanced pooling options」(進階集區選項)。
修改要更新的進階集區選項。您可以修改下列選項:
- 連線模式
- 集區大小上限
- 集區大小下限
- 用戶端連線數上限
- 用戶端連線閒置逾時時間(秒)
- 伺服器連線閒置逾時時間(秒)
- 查詢等待逾時時間(秒)
- 準備就緒的陳述式數量上限
- 忽略啟動參數
- 伺服器生命週期(秒)
按一下「更新執行個體」。
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_SIZEMIN_POOL_SIZEMAX_CLIENT_CONNECTIONSSERVER_IDLE_TIMEOUTQUERY_WAIT_TIMEOUTIGNORE_STARTUP_PARAMETERSMAX_PREPARED_STATEMENTSSERVER_LIFETIMECLIENT_CONNECTION_IDLE_TIMEOUTSTATS_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,查看執行個體的代管連線集區狀態。
控制台
前往「Clusters」(叢集) 頁面。
在「Resource Name」(資源名稱) 欄中,按一下叢集。
在「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,停用現有執行個體的代管連線集區。
控制台
前往「Clusters」(叢集) 頁面。
在「Resource Name」(資源名稱) 欄中,按一下叢集。
在「總覽」頁面,前往「叢集中的執行個體」。
找到要停用代管連線集區的執行個體,然後按一下「Edit instance」(編輯執行個體) 或「Edit read pool」(編輯讀取集區)。
在「Managed connection pool」(代管連線集區) 下方,取消勾選「Enable managed connection pool」(啟用代管連線集區) 核取方塊。
按一下「更新執行個體」。
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 |
追蹤每個資料庫的用戶端連線數量,並依用戶端連線狀態分組。這項指標包含的狀態如下:
|
伺服器連線/database/conn_pool/server_connections |
追蹤伺服器連線數量,並依各資料庫的伺服器連線狀態分組。這項指標包含的狀態如下:
|
平均等待時間/database/conn_pool/client_connections_avg_wait_time |
所有用戶端在等待伺服器時所花費的平均時間,以微秒為單位,按資料庫分組。 |
詳情請參閱「AlloyDB 指標」。
限制
限制如下:
- 如果您在交易集區模式中使用代管連線集區,則不支援下列 SQL 功能:
SET/RESETLISTENWITH HOLD CURSORPREPARE/DEALLOCATEPRESERVE/DELETE ROW個臨時資料表LOAD- 工作階段層級建議鎖定
- 通訊協定層級的預備計畫
- 公開 IP 連線不支援代管連線集區。
- 不支援具備 PostgreSQL
REPLICATION角色的使用者連線。