Esta página contém informações e exemplos para se conectar a uma instância do Cloud SQL a partir de um serviço em execução no ambiente padrão do App Engine.
O Cloud SQL é um serviço de banco de dados totalmente gerenciado que ajuda a configurar, manter, gerenciar e administrar seus bancos de dados relacionais na nuvem.
O App Engine é uma plataforma sem servidor totalmente gerenciada para desenvolver e hospedar aplicativos da Web em escala. É possível escolher entre várias linguagens, frameworks e bibliotecas conhecidos para desenvolver seus apps e, em seguida, permitir que o App Engine provisione os servidores e escalone as instâncias de app com base na demanda.
Como configurar uma instância do Cloud SQL
- Ative a API Cloud SQL Admin no projeto do qual você está se conectando, caso ainda não tenha feito isso:
- Crie uma instância do Cloud SQL para MySQL.
Por padrão, o Cloud SQL atribui um endereço IP público a uma nova instância. Você também tem a opção de atribuir um endereço IP particular. Para mais informações sobre as opções de conectividade de ambos, consulte a página Visão geral da conexão .
Como configurar o App Engine
As etapas para configurar o ambiente padrão do App Engine dependem do tipo de endereço IP atribuído à instância do Cloud SQL.IP público (padrão)
Para configurar o ambiente padrão do App Engine para ativar conexões com uma instância do Cloud SQL usando IP público:
- Verifique se a instância criada acima tem um endereço IP público. Você pode verificar isso na página Visão geral da sua instância no Console do Google Cloud. Se precisar adicionar um, consulte a página Como configurar o IP público para ver instruções.
- Receba o INSTANCE_CONNECTION_NAME da instância. Isso pode ser encontrado na página Visão geral da instância no Console do Google Cloud
ou executando o seguinte comando:
gcloud sql instances describe [INSTANCE_NAME]
. - Verifique se a conta de serviço usada pelo app para autenticar chamadas para
o Cloud SQL tem o
papel e as permissões
apropriados do Cloud SQL.
- A conta de serviço do seu serviço precisa de um dos seguintes papéis do IAM:
Cloud SQL Client
(recomendável)Cloud SQL Editor
Cloud SQL Admin
cloudsql.instances.connect
cloudsql.instances.get
Por padrão, o app autoriza as conexões usando uma conta de serviço do App Engine. A identidade da conta de serviço está no formato
PROJECT_ID@appspot.gserviceaccount.com
.Se a conta de serviço de autorização pertencer a um projeto diferente da instância do Cloud SQL, as permissões da API Cloud SQL Admin e do IAM precisarão ser adicionadas aos dois projetos.
- A conta de serviço do seu serviço precisa de um dos seguintes papéis do IAM:
IP privado
Um conector de acesso VPC sem servidor processa a comunicação com sua rede VPC. Para se conectar diretamente com IP particular, é necessário:
- Verifique se a instância do Cloud SQL criada acima tem um endereço IP particular. Se você precisar adicionar um, consulte a página Como configurar o IP particular para ver instruções.
- Crie um conector de acesso VPC sem servidor na mesma rede VPC da sua instância do Cloud SQL.
- Configure o App Engine para usar o conector.
- Conecte-se usando o IP particular e a porta
3306
da instância.
A menos que você esteja usando a VPC compartilhada, é necessário que um conector esteja no mesmo projeto e na mesma região do recurso que o utiliza, mas o conector pode enviar tráfego para recursos em regiões diferentes.
O acesso VPC sem servidor é compatível com a comunicação com redes VPC conectadas por meio do Cloud VPN e de peering de rede VPC.
O acesso VPC sem servidor não é compatível com redes legadas.
Como se conectar ao Cloud SQL
Depois de configurar o App Engine, será possível se conectar à instância do Cloud SQL.
IP público (padrão)
Para caminhos de IP público, o App Engine fornece conexões com criptografia/autorização com o Cloud SQL Proxy.
Como se conectar com soquetes Unix
Depois de configurá-lo corretamente, conecte o serviço ao
soquete de domínio do Unix da instância do Cloud SQL que foi acessado no sistema de arquivos do ambiente
por meio deste caminho:
/cloudsql/INSTANCE_CONNECTION_NAME
.
Ele pode ser encontrado
na página Visão geral da instância no
Console do Google Cloud ou executando o
seguinte comando:
gcloud sql instances describe [INSTANCE_NAME]
.
Essas conexões são criptografadas automaticamente sem qualquer configuração extra.
Os exemplos de código mostrados abaixo são trechos de exemplos mais completos no site do GitHub. Clique em View on GitHub
para ver mais
Python
Para ver esse snippet no contexto de um aplicativo da Web, consulte o README no GitHub (em inglês).
Java
Para ver esse snippet no contexto de um aplicativo da Web, consulte o README no GitHub (em inglês).
Node.js
Para ver esse snippet no contexto de um aplicativo da Web, consulte o README no GitHub (em inglês).
C#
Para ver esse snippet no contexto de um aplicativo da Web, consulte o README no GitHub (em inglês).
Go
Para ver esse snippet no contexto de um aplicativo da Web, consulte o README no GitHub (em inglês).
Ruby
Para ver esse snippet no contexto de um aplicativo da Web, consulte o README no GitHub (em inglês).
PHP
Para ver esse snippet no contexto de um aplicativo da Web, consulte o README no GitHub (em inglês).
IP particular
Para caminhos de IP particulares, o aplicativo se conectará diretamente à instância usando o acesso VPC sem servidor.
Como se conectar com TCP
Conecte-se diretamente usando o endereço IP particular e a porta 3306
da instância.
Python
Para ver esse snippet no contexto de um aplicativo da Web, consulte o README no GitHub (em inglês).
Java
Para ver esse snippet no contexto de um aplicativo da Web, consulte o README no GitHub (em inglês).
Node.js
Para ver esse snippet no contexto de um aplicativo da Web, consulte o README no GitHub.
Go
Para ver esse snippet no contexto de um aplicativo da Web, consulte o README no GitHub.
C#
Para ver esse snippet no contexto de um aplicativo da Web, consulte o README no GitHub (em inglês).
Ruby
Para ver esse snippet no contexto de um aplicativo da Web, consulte o README no GitHub.
PHP
Para ver esse snippet no contexto de um aplicativo da Web, consulte o README no GitHub (em inglês).
Práticas recomendadas e outras informações
É possível usar o Cloud SQL Proxy ao testar seu aplicativo localmente. Acesse o guia de início rápido sobre como usar o proxy para testes locais e veja instruções detalhadas.
Pools de conexões
As conexões aos bancos de dados subjacentes podem ser descartadas pelo próprio servidor de banco de dados ou pela infraestrutura subjacente. Para atenuar isso, recomendamos que você use uma biblioteca de cliente que ofereça suporte a pools de conexão e à reconexão automática.
Limites de conexão
Cada instância do App Engine executada em um ambiente padrão não pode ter mais de 100 conexões simultâneas com uma instância. Nos apps em PHP 5.5, o limite é de 60 conexões simultâneas. Esse limite é aplicado por instância do aplicativo. Isso significa que cada instância do aplicativo do App Engine pode ter muitas conexões com o banco de dados e, à medida que ela cresce, o número total de conexões por implantação pode aumentar. Para mais informações, consulte os Elementos de escalonamento.
É possível limitar o número máximo de conexões por instância usando um pool de conexões. Para exemplos mais detalhados sobre como limitar o número de conexões, consulte a página Como gerenciar conexões de banco de dados.
Os aplicativos do App Engine estão sujeitos a limites de tempo de solicitação, dependendo do uso e do ambiente. Para mais informações, veja como as instâncias são gerenciadas nos ambientes padrão e flexível do App Engine.
Os aplicativos do App Engine também estão sujeitos a outras cotas e limites, conforme descrito na página Cotas do App Engine.
Limites de cota da API
O App Engine fornece um mecanismo que se conecta usando o Cloud SQL Proxy, que usa a API Cloud SQL Admin. Os limites de cota da API se aplicam ao Cloud SQL Proxy.