本页介绍了如何在 Cloud SQL 实例中启用、配置和监控托管式连接池。
借助托管式连接池,您可以使用池来优化实例的资源利用率和连接延迟时间,从而扩缩工作负载。如需详细了解托管式连接池以及如何将其用于实例,请参阅托管式连接池概览。
准备工作
- 确认您的实例满足使用托管式连接池的所有要求。
- 如果您使用的是 gcloud CLI,请确认您的 gcloud CLI 版本为
515.0.0或更高版本。 - 确认您的实例使用的是新的 Cloud SQL 网络架构。如果您的实例仍在使用旧网络架构,请升级到新网络架构。
- 确认您的实例在数据库的配置设置中,已根据
max_connections标志分配了所需的每个 vCPU 服务器连接数。如需了解详情,请参阅托管式连接池使用的服务器连接。
启用托管式连接池
您可以在创建实例时为实例启用托管式连接池,也可以修改现有实例以启用它。
为新实例启用托管式连接池
如需创建启用了托管式连接池的新实例,请参阅创建实例。您只能使用 gcloud CLI 或 Cloud SQL API 为新实例启用托管式连接池。
为现有实例停用托管式连接池
如需为现有实例启用托管式连接池,请执行以下操作:
控制台
在 Google Cloud 控制台中,前往 Cloud SQL 实例页面。
找到您要为其启用托管式连接池的实例。如需打开实例的“概览”页面,请点击实例名称。
点击修改。
在自定义实例下,展开连接。
如需启用托管式连接池,请勾选启用托管式连接池复选框。
点击保存。
gcloud
使用 gcloud sql instances 命令启用托管式连接池。
gcloud sql instances patch INSTANCE_NAME \
--enable-connection-pooling
替换以下内容:
INSTANCE_NAME:Cloud SQL 实例的名称。
REST v1
使用以下命令并设置 connectionPoolingEnabled:
在使用任何请求数据之前,请先进行以下替换:
- PROJECT_ID:项目 ID
- INSTANCE_ID:实例 ID
HTTP 方法和网址:
PATCH https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID
请求 JSON 正文:
{
"settings": {
"connectionPoolConfig": {
"connectionPoolingEnabled": true
}
}
}
如需发送您的请求,请展开以下选项之一:
您应该收到类似以下内容的 JSON 响应:
{
"kind": "sql#operation",
"targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID",
"status": "PENDING",
"user": "user@example.com",
"insertTime": "2020-01-16T02:32:12.281Z",
"operationType": "UPDATE",
"name": "OPERATION_ID",
"targetId": "INSTANCE_ID",
"selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID",
"targetProject": "PROJECT_ID"
}
REST v1beta4
使用以下命令并设置 connectionPoolingEnabled:
在使用任何请求数据之前,请先进行以下替换:
- PROJECT_ID:项目 ID
- INSTANCE_ID:实例 ID
HTTP 方法和网址:
PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID
请求 JSON 正文:
{
"settings": {
"connectionPoolConfig": {
"connectionPoolingEnabled": true
}
}
}
如需发送您的请求,请展开以下选项之一:
您应该收到类似以下内容的 JSON 响应:
{
"kind": "sql#operation",
"targetLink": "https://sqladmin.googleapis.com/sql/v1/projects/PROJECT_ID/instances/INSTANCE_ID",
"status": "PENDING",
"user": "user@example.com",
"insertTime": "2020-01-16T02:32:12.281Z",
"operationType": "UPDATE",
"name": "OPERATION_ID",
"targetId": "INSTANCE_ID",
"selfLink": "https://sqladmin.googleapis.com/sql/v1/projects/PROJECT_ID/operations/OPERATION_ID",
"targetProject": "PROJECT_ID"
}
Terraform
使用以下 Terraform 资源:
为实例修改托管式连接池
启用托管式连接池后,您可以使用高级配置选项来自定义托管式连接池,以满足实例的需求。这些配置选项称为托管式连接池标志。添加到托管式连接池的配置会应用于实例使用的所有连接池。如需详细了解高级配置选项、其默认值和范围,请参阅高级配置选项。
如需修改实例的高级托管式连接池配置选项,请执行以下操作:
控制台
在 Google Cloud 控制台中,前往 Cloud SQL 实例页面。
找到您要为其启用托管式连接池的实例。如需打开实例的“概览”页面,请点击实例名称。
点击修改。
在自定义实例下,展开连接。
在托管式连接池下,展开高级池选项。
修改您要更新的高级池选项。
点击保存。
gcloud
使用 gcloud sql instances 命令修改配置选项。
gcloud sql instances patch INSTANCE_NAME \
--connection-pool-flags=CONFIGURATION_NAME=CONFIGURATION_VALUE
替换以下内容:
INSTANCE_NAME:Cloud SQL 实例的名称。CONFIGURATION_NAME:配置选项的名称。如需查看所有高级配置选项的列表,请参阅高级配置选项。CONFIGURATION_VALUE:所选配置选项的新值。
REST v1
如需修改托管式连接池的高级配置,请使用以下命令并设置 ConnectionPoolConfig:
在使用任何请求数据之前,请先进行以下替换:
- PROJECT_ID:项目 ID
- INSTANCE_ID:实例 ID
HTTP 方法和网址:
PATCH https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID
请求 JSON 正文:
{
"settings": {
"connectionPoolConfig": {
"flags":
[
{
"name": "CONFIGURATION_NAME",
"value":"CONFIGURATION_VALUE"
}
]
}
}
}
如需发送您的请求,请展开以下选项之一:
您应该收到类似以下内容的 JSON 响应:
{
"kind": "sql#operation",
"targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID",
"status": "PENDING",
"user": "user@example.com",
"insertTime": "2020-01-16T02:32:12.281Z",
"operationType": "UPDATE",
"name": "OPERATION_ID",
"targetId": "INSTANCE_ID",
"selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID",
"targetProject": "PROJECT_ID"
}
REST v1beta4
如需修改托管式连接池的高级配置,请使用以下命令并设置 ConnectionPoolConfig:
在使用任何请求数据之前,请先进行以下替换:
- PROJECT_ID:项目 ID
- INSTANCE_ID:实例 ID
HTTP 方法和网址:
PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID
请求 JSON 正文:
{
"settings": {
"connectionPoolConfig": {
"flags":
[
{
"name": "CONFIGURATION_NAME",
"value":"CONFIGURATION_VALUE"
}
]
}
}
}
如需发送您的请求,请展开以下选项之一:
您应该收到类似以下内容的 JSON 响应:
{
"kind": "sql#operation",
"targetLink": "https://sqladmin.googleapis.com/sql/v1/projects/PROJECT_ID/instances/INSTANCE_ID",
"status": "PENDING",
"user": "user@example.com",
"insertTime": "2020-01-16T02:32:12.281Z",
"operationType": "UPDATE",
"name": "OPERATION_ID",
"targetId": "INSTANCE_ID",
"selfLink": "https://sqladmin.googleapis.com/sql/v1/projects/PROJECT_ID/operations/OPERATION_ID",
"targetProject": "PROJECT_ID"
}
Terraform
如需修改托管式连接池高级配置,请使用以下 Terraform 资源:
为实例停用托管式连接池
您可以使用Google Cloud 控制台、gcloud CLI 或 Cloud SQL API 为现有实例停用托管式连接池。
如需为实例停用托管式连接池,请执行以下操作:
控制台
在 Google Cloud 控制台中,前往 Cloud SQL 实例页面。
找到您要为其停用托管式连接池的实例。 如需打开实例的“概览”页面,请点击实例名称。
点击修改。
在自定义实例下,展开连接。
如需停用托管式连接池,请取消选中启用托管式连接池对应的复选框。
点击保存。
gcloud
使用 gcloud sql instances 命令停用托管式连接池。
gcloud sql instances patch INSTANCE_NAME \
--no-enable-connection-pooling
替换以下内容:
PROJECT_ID:Cloud SQL 实例的名称。
REST v1
如需为实例停用托管式连接池,请使用以下命令并设置 connectionPoolingEnabled:
在使用任何请求数据之前,请先进行以下替换:
- PROJECT_ID:项目 ID
- INSTANCE_ID:实例 ID
HTTP 方法和网址:
PATCH https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID
请求 JSON 正文:
{
"settings": {
"connectionPoolConfig": {
"connectionPoolingEnabled": false
}
}
}
如需发送您的请求,请展开以下选项之一:
您应该收到类似以下内容的 JSON 响应:
{
"kind": "sql#operation",
"targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID",
"status": "PENDING",
"user": "user@example.com",
"insertTime": "2020-01-16T02:32:12.281Z",
"operationType": "UPDATE",
"name": "OPERATION_ID",
"targetId": "INSTANCE_ID",
"selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID",
"targetProject": "PROJECT_ID"
}
REST v1beta4
如需为实例停用托管式连接池,请使用以下命令并设置 connectionPoolingEnabled:
在使用任何请求数据之前,请先进行以下替换:
- PROJECT_ID:项目 ID
- INSTANCE_ID:实例 ID
HTTP 方法和网址:
PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID
请求 JSON 正文:
{
"settings": {
"connectionPoolConfig": {
"connectionPoolingEnabled": false
}
}
}
如需发送您的请求,请展开以下选项之一:
您应该收到类似以下内容的 JSON 响应:
{
"kind": "sql#operation",
"targetLink": "https://sqladmin.googleapis.com/sql/v1/projects/PROJECT_ID/instances/INSTANCE_ID",
"status": "PENDING",
"user": "user@example.com",
"insertTime": "2020-01-16T02:32:12.281Z",
"operationType": "UPDATE",
"name": "OPERATION_ID",
"targetId": "INSTANCE_ID",
"selfLink": "https://sqladmin.googleapis.com/sql/v1/projects/PROJECT_ID/operations/OPERATION_ID",
"targetProject": "PROJECT_ID"
}
Terraform
如需为实例停用托管式连接池,请使用以下 Terraform 资源:
查看实例的托管式连接池状态
您可以使用 Google Cloud 控制台、gcloud CLI 或 Cloud SQL API 查看实例的托管式连接池的状态。
如需查看 Cloud SQL 企业 Plus 版实例的托管式连接池的状态,请执行以下操作:
控制台
在 Google Cloud 控制台中,前往 Cloud SQL 实例页面。
找到您要查看其托管式连接池状态的实例。如需打开实例的“概览”页面,请点击实例名称。
连接部分显示了托管式连接池处于启用状态还是处于停用状态。
gcloud
使用 gcloud sql instances describe 命令查看实例的托管式连接池状态:
gcloud sql instances describe INSTANCE_NAME
--format="value(settings.connectionPoolConfig.connectionPoolingEnabled)"
替换以下内容:
PROJECT_ID:Cloud SQL 实例的名称。如果启用了托管式连接池,系统会返回以下响应:
connectionPoolingEnabled: true
REST v1
如需查看 Cloud SQL 实例的托管式连接池的状态,请使用以下命令并查找 connectionPoolingEnabled:
在使用任何请求数据之前,请先进行以下替换:
- PROJECT_ID:包含实例的 Google Cloud 项目的 ID 或项目编号。
- INSTANCE_NAME:Cloud SQL 实例的名称。如果此实例启用了 Private Service Connect,则 VPC 网络中的 Private Service Connect 端点可以连接到此实例。
HTTP 方法和网址:
GET https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME
如需发送您的请求,请展开以下选项之一:
您应该收到类似以下内容的 JSON 响应:
{
"kind": "sql#instance",
"state": "RUNNABLE",
"databaseVersion": "POSTGRES_13",
"settings": {
"authorizedGaeApplications": [],
"tier": "db-custom-2-7680",
"kind": "sql#settings",
"availabilityType": "REGIONAL",
"pricingPlan": "PER_USE",
"replicationType": "SYNCHRONOUS",
"activationPolicy": "ALWAYS",
"ipConfiguration": {
"authorizedNetworks": [],
"pscConfig": {
"allowedConsumerProjects": [
"ALLOWED_PROJECTS"
],
"pscEnabled": true
},
"ipv4Enabled": false
},
...
"createTime": "2023-06-14T18:48:34.975Z",
"sqlNetworkArchitecture": "NEW_NETWORK_ARCHITECTURE",
"pscServiceAttachmentLink": "projects/PROJECT_ID/regions/REGION_NAME/serviceAttachments/SERVICE_ATTACHMENT_ID",
"dnsName": "DNS_NAME"
}
REST v1beta4
如需查看 Cloud SQL 实例的托管式连接池的状态,请使用以下命令并查找 connectionPoolingEnabled:
在使用任何请求数据之前,请先进行以下替换:
- PROJECT_ID:包含实例的 Google Cloud 项目的 ID 或项目编号。
- INSTANCE_NAME:Cloud SQL 实例的名称。如果此实例启用了 Private Service Connect,则 VPC 网络中的 Private Service Connect 端点可以连接到此实例。
HTTP 方法和网址:
GET https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_NAME
如需发送您的请求,请展开以下选项之一:
您应该收到类似以下内容的 JSON 响应:
{
"kind": "sql#instance",
"state": "RUNNABLE",
"databaseVersion": "POSTGRES_13",
"settings": {
"authorizedGaeApplications": [],
"tier": "db-custom-2-7680",
"kind": "sql#settings",
"availabilityType": "REGIONAL",
"pricingPlan": "PER_USE",
"replicationType": "SYNCHRONOUS",
"activationPolicy": "ALWAYS",
"ipConfiguration": {
"authorizedNetworks": [],
"pscConfig": {
"allowedConsumerProjects": [
"ALLOWED_PROJECTS"
],
"pscEnabled": true
},
"ipv4Enabled": false
},
...
"createTime": "2023-06-14T18:48:34.975Z",
"sqlNetworkArchitecture": "NEW_NETWORK_ARCHITECTURE",
"pscServiceAttachmentLink": "projects/PROJECT_ID/regions/REGION_NAME/serviceAttachments/SERVICE_ATTACHMENT_ID",
"dnsName": "DNS_NAME"
}
监控托管式连接池
您可以使用以下 Cloud SQL 托管式连接池指标监控托管式连接池在 Cloud SQL 实例上的运行情况:
| 指标名称 | 说明 |
|---|---|
| num_pools | 每个数据库的连接池总数。 |
| client_connection | 按客户端连接的状态跟踪连接数。此指标包含的状态如下:
|
| server_connections | 按服务器连接的状态跟踪服务器连接数。此指标包含的状态如下:
|
| client_connections_avg_wait_time | 所有客户端在等待服务器状态下的平均时间。 |
如需详细了解这些指标,请参阅 Cloud SQL 指标。如需使用 Google Cloud 控制台查看这些指标,请参阅在 Cloud SQL 实例概览页面上查看指标。