Configurar o agrupamento de conexões gerenciado

Nesta página, descrevemos como ativar, configurar e monitorar o pool de conexões gerenciadas nas instâncias do Cloud SQL.

Com o pooling de conexões gerenciado, é possível escalonar suas cargas de trabalho otimizando a utilização de recursos e a latência de conexão das instâncias usando o pooling. Para informações detalhadas sobre o pool de conexões gerenciado e como usá-lo nas suas instâncias, consulte Visão geral do pool de conexões gerenciado.

Antes de começar

  • Confirme se a instância atende a todos os requisitos para usar o pool de conexões gerenciadas.
  • Se você estiver usando a CLI gcloud, confirme se a versão da CLI gcloud é 515.0.0 ou mais recente.

Ativar o pooling de conexões gerenciado

É possível ativar o pool de conexões gerenciado para uma instância no momento da criação ou editar uma instância existente para ativá-lo.

Ativar o pool de conexões gerenciado para uma nova instância

Para criar uma instância com o pool de conexões gerenciado ativado, consulte Criar instâncias. É possível ativar o Managed Connection Pooling para uma nova instância usando apenas a gcloud CLI ou a API Cloud SQL.

Ativar o pool de conexões gerenciado para uma instância atual

Para ativar o pool de conexões gerenciado em uma instância atual, faça o seguinte:

Console

  1. No console Trusted Cloud , acesse a página Instâncias do Cloud SQL.

    Acesse "Instâncias do Cloud SQL"

  2. Encontre a instância em que você quer ativar o pool de conexões gerenciado. Para abrir a página "Visão geral" da instância, clique no nome dela.

  3. Clique em Editar.

  4. Em Personalizar sua instância, expanda Conexões.

  5. Para ativar o pool de conexões gerenciado, marque a caixa Ativar pool de conexões gerenciado.

  6. Clique em Salvar.

gcloud

Use o comando gcloud sql instances para ativar o agrupamento de conexões gerenciado.

  gcloud sql instances patch INSTANCE_NAME \
  --enable-connection-pooling

Substitua:

  • INSTANCE_NAME: o nome da instância do Cloud SQL.

REST v1

Use o comando a seguir e defina connectionPoolingEnabled:

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • PROJECT_ID: o ID do projeto
  • INSTANCE_ID: o ID da instância

Método HTTP e URL:

PATCH https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID

Corpo JSON da solicitação:

{
  "settings": {
    "connectionPoolConfig": {
      "connectionPoolingEnabled": true
    }
  }
}

Para enviar a solicitação, expanda uma destas opções:

Você receberá uma resposta JSON semelhante a esta:

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

Use o comando a seguir e defina connectionPoolingEnabled:

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • PROJECT_ID: o ID do projeto
  • INSTANCE_ID: o ID da instância

Método HTTP e URL:

PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID

Corpo JSON da solicitação:

{
  "settings": {
    "connectionPoolConfig": {
      "connectionPoolingEnabled": true
    }
  }
}

Para enviar a solicitação, expanda uma destas opções:

Você receberá uma resposta JSON semelhante a esta:

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

Use o seguinte recurso do Terraform:

# This example shows creating an instance with Managed Connection Pooling enabled and custom flags set.
resource "google_sql_database_instance" "mysql_managed_connection_pooling_enable" {
  name                = "mysql-instance-managed-connection-pooling-enable"
  region              = "us-central1"
  database_version    = "MYSQL_8_0"
  deletion_protection = false

  settings {
    tier    = "db-perf-optimized-N-2"
    edition = "ENTERPRISE_PLUS"
    connection_pool_config {
      connection_pooling_enabled = true
    }
  }
}

Modificar o pooling de conexões gerenciado para uma instância

Depois de ativar o pool de conexões gerenciado, é possível personalizá-lo para atender às necessidades da sua instância usando opções de configuração avançadas. Essas opções de configuração são chamadas de flags de pool de pool de conexões gerenciado. Para mais informações sobre as opções de configuração avançada, os valores padrão e os intervalos, consulte Opções de configuração avançada.

Para modificar as opções avançadas de configuração do pool de conexões gerenciadas de uma instância, faça o seguinte:

Console

  1. No console Trusted Cloud , acesse a página Instâncias do Cloud SQL.

    Acesse "Instâncias do Cloud SQL"

  2. Encontre a instância em que você quer ativar o pool de conexões gerenciado. Para abrir a página "Visão geral" da instância, clique no nome dela.

  3. Clique em Editar.

  4. Em Personalizar sua instância, expanda Conexões.

  5. Em Pool de conexões gerenciado, expanda Opções avançadas de pooling.

    Modifique as opções avançadas de agrupamento que você quer atualizar.

  6. Clique em Salvar.

gcloud

Use o comando gcloud sql instances para modificar as opções de configuração.

  gcloud sql instances patch INSTANCE_NAME \
  --connection-pool-flags=CONFIGURATION_NAME=CONFIGURATION_VALUE

Substitua:

  • INSTANCE_NAME: o nome da instância do Cloud SQL.
  • CONFIGURATION_NAME: o nome da opção de configuração. Para uma lista de todas as opções de configuração avançada, consulte Opções de configuração avançada.
  • CONFIGURATION_VALUE: o novo valor da opção de configuração selecionada.

REST v1

Para modificar o pool de conexões gerenciadas Configurações avançadas, use o comando a seguir e defina ConnectionPoolConfig:

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • PROJECT_ID: o ID do projeto
  • INSTANCE_ID: o ID da instância

Método HTTP e URL:

PATCH https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID

Corpo JSON da solicitação:

{
  "settings": {
    "connectionPoolConfig": {
      "flags":
      [
        {
          "name": "CONFIGURATION_NAME",
          "value":"CONFIGURATION_VALUE"
        }
      ]
    }
  }
}

Para enviar a solicitação, expanda uma destas opções:

Você receberá uma resposta JSON semelhante a esta:

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

Para modificar o pool de conexões gerenciadas Configurações avançadas, use o comando a seguir e defina ConnectionPoolConfig:

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • PROJECT_ID: o ID do projeto
  • INSTANCE_ID: o ID da instância

Método HTTP e URL:

PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID

Corpo JSON da solicitação:

{
  "settings": {
    "connectionPoolConfig": {
      "flags":
      [
        {
          "name": "CONFIGURATION_NAME",
          "value":"CONFIGURATION_VALUE"
        }
      ]
    }
  }
}

Para enviar a solicitação, expanda uma destas opções:

Você receberá uma resposta JSON semelhante a esta:

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

Para modificar o pool de conexões gerenciadas Configurações avançadas, use o seguinte recurso do Terraform:

# This example shows modifying the flags of an existing Managed Connection Pooling configuration.
resource "google_sql_database_instance" "mysql_managed_connection_pooling_modify" {
  name                = "mysql-instance-managed-connection-pooling-modify"
  region              = "us-central1"
  database_version    = "MYSQL_8_0"
  deletion_protection = false

  settings {
    tier    = "db-perf-optimized-N-2"
    edition = "ENTERPRISE_PLUS"
    connection_pool_config {
      connection_pooling_enabled = true
      flags {
        name  = "max_pool_size" # Modify or add the name and value of an flag
        value = "10"
      }
    }
  }
}

Desativar o pooling de conexões gerenciado para uma instância

É possível desativar o pool de conexões gerenciadas para uma instância atual usando o console doTrusted Cloud , a CLI gcloud ou a API Cloud SQL.

Para desativar o pool de conexões gerenciado em uma instância, faça o seguinte:

Console

  1. No console Trusted Cloud , acesse a página Instâncias do Cloud SQL.

    Acesse "Instâncias do Cloud SQL"

  2. Encontre a instância em que você quer desativar o pool de conexões gerenciado. Para abrir a página "Visão geral" da instância, clique no nome dela.

  3. Clique em Editar.

  4. Em Personalizar sua instância, expanda Conexões.

  5. Para desativar o pooling de conexões gerenciado, desmarque a caixa Ativar o pool de conexões gerenciado.

  6. Clique em Salvar.

gcloud

Use o comando gcloud sql instances para desativar o pool de conexões gerenciadas.

  gcloud sql instances patch INSTANCE_NAME \
  --no-enable-connection-pooling

Substitua:

  • PROJECT_ID: o nome da instância do Cloud SQL.

REST v1

Para desativar o pool de conexões gerenciadas em uma instância, use o seguinte comando e defina connectionPoolingEnabled:

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • PROJECT_ID: o ID do projeto
  • INSTANCE_ID: o ID da instância

Método HTTP e URL:

PATCH https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID

Corpo JSON da solicitação:

{
  "settings": {
    "connectionPoolConfig": {
      "connectionPoolingEnabled": false
    }
  }
}

Para enviar a solicitação, expanda uma destas opções:

Você receberá uma resposta JSON semelhante a esta:

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

Para desativar o pool de conexões gerenciadas em uma instância, use o seguinte comando e defina connectionPoolingEnabled:

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • PROJECT_ID: o ID do projeto
  • INSTANCE_ID: o ID da instância

Método HTTP e URL:

PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID

Corpo JSON da solicitação:

{
  "settings": {
    "connectionPoolConfig": {
      "connectionPoolingEnabled": false
    }
  }
}

Para enviar a solicitação, expanda uma destas opções:

Você receberá uma resposta JSON semelhante a esta:

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

Para desativar o pool de conexões gerenciadas em uma instância, use o seguinte recurso do Terraform:

# This example shows disabling Managed Connection Pooling on an existing instance.
resource "google_sql_database_instance" "mysql_managed_connection_pooling_disable" {
  name                = "mysql-instance-managed-connection-pooling-disable"
  region              = "us-central1"
  database_version    = "MYSQL_8_0"
  deletion_protection = false

  settings {
    tier    = "db-perf-optimized-N-2"
    edition = "ENTERPRISE_PLUS"
    connection_pool_config {
      # Set to false to disable Managed Connection Pooling. You can also remove the block entirely.
      connection_pooling_enabled = false
    }
  }
}

Ver o status do pool de conexões gerenciado de uma instância

É possível conferir o status do pool de conexões gerenciadas de uma instância usando o console Trusted Cloud , a CLI gcloud ou a API Cloud SQL.

Para conferir o status do pool de conexões gerenciadas de uma instância do Cloud SQL Enterprise Plus, faça o seguinte:

Console

  1. No console Trusted Cloud , acesse a página Instâncias do Cloud SQL.

    Acesse "Instâncias do Cloud SQL"

  2. Encontre a instância em que você quer ver o status do pool de conexões gerenciado. Para abrir a página "Visão geral" da instância, clique no nome dela.

    A seção Conexões mostra se o pool de conexões gerenciadas está ativado ou desativado.

gcloud

Use o comando gcloud sql instances describe para conferir o status do pool de conexões gerenciadas de uma instância:

  gcloud sql instances describe INSTANCE_NAME
  --format="value(settings.connectionPoolConfig.connectionPoolingEnabled)"

Substitua:

  • PROJECT_ID: o nome da instância do Cloud SQL.

    Se o pooling de conexões gerenciado estiver ativado, a seguinte resposta será retornada:

    connectionPoolingEnabled: true

REST v1

Para conferir o status do pool de conexões gerenciadas da sua instância do Cloud SQL, use o comando a seguir e procure connectionPoolingEnabled:

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

Método HTTP e URL:

GET https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME

Para enviar a solicitação, expanda uma destas opções:

Você receberá uma resposta JSON semelhante a esta:

{
  "kind": "sql#instance",
  "state": "RUNNABLE",
  "databaseVersion": "MYSQL_8_0",
  "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

Para conferir o status do pool de conexões gerenciadas da sua instância do Cloud SQL, use o comando a seguir e procure connectionPoolingEnabled:

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

Método HTTP e URL:

GET https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_NAME

Para enviar a solicitação, expanda uma destas opções:

Você receberá uma resposta JSON semelhante a esta:

{
  "kind": "sql#instance",
  "state": "RUNNABLE",
  "databaseVersion": "MYSQL_8_0",
  "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"
}

Monitorar o pooling de conexões gerenciado

É possível monitorar como o Managed Connection Pooling está sendo executado nas suas instâncias do Cloud SQL usando as seguintes métricas do Managed Connection Pooling do Cloud SQL:

Nome da métrica Descrição
conversas Acompanha a contagem de threads no pool de conexões pelo status. Os status incluídos nessa métrica são:
  • idle: o número de linhas de execução ociosas no pool.
  • active: o número de linhas de execução ativas (não ociosas) no pool.
pending_connection O número de conexões ativas na fila de pooling.
avg_wait_time O tempo médio gasto pela solicitação de conexão aguardando um servidor.

Para mais informações sobre essas métricas, consulte Métricas do Cloud SQL. Para conferir essas métricas usando o console Trusted Cloud , consulte Ver métricas na página de visão geral da instância do Cloud SQL.

A seguir