Visão geral
Nesta página, mostramos como usar um endpoint de gravação para se conectar de clientes na rede de nuvem privada virtual (VPC) a uma instância do Cloud SQL usando Acesso a serviços particulares (PSA).
Um endpoint de gravação é um nome de serviço de nome de domínio (DNS) global que se refere ao endereço IP da instância principal atual automaticamente. No caso de uma operação de failover ou alternância de réplica, esse endpoint de gravação redireciona as conexões de entrada para a nova instância principal automaticamente. É possível usar o endpoint de gravação em uma string de conexão SQL com a instância do Cloud SQL em vez de um endereço IP. Ao usar um endpoint de gravação, você evita ter que fazer mudanças na conexão do aplicativo ao realizar uma operação de failover ou alternância de réplica para recuperação de interrupção regional ou simulação de recuperação de desastres.
Cada instância do Cloud SQL qualificada tem um único endpoint de gravação integrado cujo nome, criação e atualização são gerenciados pelo Cloud SQL. O exemplo a seguir ilustra o formato dele:
primary.103uufa2svq8u.2rb3qdj9tkf4d.global.sql-psa.goog.
O endpoint de gravação sempre termina com o sufixo .global.sql-psa.goog..
Não é possível modificar o nome ou o formato desse endpoint de gravação gerenciado pelo Cloud SQL.
É possível usar o endpoint de gravação para todas as operações de gravação na instância principal, incluindo inserções, atualizações, exclusões e mudanças de DDL. Também é possível usar o endpoint de gravação para operações de leitura, como consultas. O endereço IP particular apontado pelo endpoint de gravação é alterado automaticamente pelo Cloud SQL quando você realiza uma operação de failover ou alternância de réplica para promover uma instância de réplica como a nova instância principal.
Gerar o endpoint de gravação
Se você criar uma nova instância do Cloud SQL, o Cloud SQL vai criar o endpoint de gravação automaticamente quando os pré-requisitos a seguir forem atendidos:
- As APIs a seguir precisam estar ativadas
no Google Cloud projeto em que a instância do Cloud SQL reside:
Se você não ativar a API Cloud DNS no projeto, não será possível criar a zona de DNS de peering, o que tornará os nomes de DNS inutilizáveis.
Depois que a zona de DNS de peering for criada, é importante que ela não seja modificada de forma alguma. Qualquer modificação, incluindo a exclusão, vai tornar o DNS inutilizável para a conexão do banco de dados.
- A instância do Cloud SQL precisa ser da edição Cloud SQL Enterprise Plus.
- A instância do Cloud SQL precisa ser configurada para usar um IP particular com o Acesso a serviços particulares (PSA) ativado.
- O recurso exige instâncias na nova arquitetura de rede. Na maioria dos casos, as novas instâncias são criadas com a nova arquitetura. Para verificar isso, confira a arquitetura de rede da sua instância.
Ao fazer upgrade de uma instância do Cloud SQL Enterprise para uma instância do Cloud SQL Enterprise Plus, o Cloud SQL gera automaticamente o endpoint de gravação se os pré-requisitos listados anteriormente forem atendidos. Se a instância estiver na arquitetura de rede antiga, primeiro faça upgrade da instância para a nova arquitetura de rede para receber o endpoint de gravação.
Se você já tiver uma instância do Cloud SQL Enterprise Plus sem o endpoint de gravação e quiser que o Cloud SQL gere um endpoint de gravação automaticamente, crie uma réplica ativada para recuperação avançada de desastres.
Conferir o endpoint de gravação
gcloud
Para encontrar o endpoint de gravação, use o seguinte comando da CLI gcloud:
gcloud sql instances describe INSTANCE_NAME \ | grep writeEndpoint
Faça as seguintes substituições:
INSTANCE_NAME: o nome da instância do Cloud SQL.
Os endpoints de gravação sempre terminam com o sufixo .global.sql-psa.goog., semelhante ao exemplo a seguir:
primary.103uufa2svq8u.2rb3qdj9tkf4d.global.sql-psa.goog.
Se você não encontrar o endpoint de gravação para uma instância qualificada, consulte Solução de problemas.
Conectar-se a uma instância do Cloud SQL usando um endpoint de gravação
sqlcmd
Para conectar um cliente sqlcmd a uma instância do Cloud SQL usando o endpoint de gravação,
execute o seguinte comando:
sqlcmd -S WRITE_ENDPOINT -U USERNAME -d DATABASE_NAME -P
Faça as seguintes substituições:
- DATABASE_NAME: o nome do banco de dados. Por exemplo,
main. - USERNAME: o nome de usuário. Por exemplo,
sqlserver. - WRITE_ENDPOINT: o nome DNS ou o endpoint de gravação. Esse valor alfanumérico
sempre termina com o sufixo
.global.sql-psa.goog.. Por exemplo,primary.103uufa2svq8u.2rb3qdj9tkf4d.global.sql-psa.goog..
Limitações
- Os endpoints de gravação não estão disponíveis para criações de instâncias do Cloud SQL Enterprise.
- Os endpoints de gravação não estão disponíveis para instâncias somente de IP público ou somente do Private Service Connect.
Solução de problemas
As seções a seguir descrevem a arquitetura dos endpoints de gravação e abordam problemas comuns de solução de problemas.
Arquitetura de um endpoint de gravação
Quando você cria uma instância qualificada, um endpoint de gravação é gerado por padrão.
Para criar um endpoint de gravação, o Cloud SQL realiza a seguinte configuração:
- Cria uma zona de DNS particular na rede VPC do produtor de serviços do Cloud SQL
- Cria uma zona de DNS de peering na rede VPC do cliente
- Cria um registro DNS na zona de DNS particular na rede do produtor de serviços
O diagrama a seguir ilustra como esse processo funciona:
Problemas de resolução de DNS
Se a resolução de DNS não estiver funcionando, verifique cada um dos seguintes itens:
- Verifique se todos os pré-requisitos foram atendidos.
- Verifique se os clientes em que a resolução é esperada estão localizados em
na mesma rede a que a instância do Cloud SQL está anexada. Para verificar
isso, use o
gcloud compute instances listcomando:gcloud compute instances list \ --format="table( name, zone.basename(), networkInterfaces[].network )" \ --project=PROJECT_NAME
Substitua PROJECT_NAME pelo nome do projeto em que a rede de consumidor de DNS reside.
- Verifique se a zona de peering existe. Para fazer isso, use o
gcloud dns managed-zones listcomando:gcloud dns managed-zones list \ --project=PROJECT_NAME
Substitua PROJECT_NAME pelo nome do projeto em que a rede de consumidor de DNS reside.
A nova instância não tem um endpoint de gravação
Se uma instância recém-criada não contiver um endpoint de gravação, verifique cada um dos seguintes itens:
- Verifique se todos os pré-requisitos foram atendidos.
- Verifique se não há uma zona de DNS de peering restante com o nome DNS
sql-psa.goog..Uma zona de DNS de peering é uma zona de DNS restante se a rede associada com a zona de DNS não tiver um peering de VPC com o ID do projeto de peering da zona de DNS de peering.
Se houver uma zona de DNS de peering restante com o
sql-psa.goog.sufixo, exclua-a.Para verificar se há zonas de DNS de peering restantes, use o
gcloud dns managed-zones listcomando:gcloud dns managed-zones list \ --project=PROJECT_NAME
Substitua PROJECT_NAME pelo nome do projeto em que a rede de consumidor de DNS reside.
Se uma zona de DNS existir com o sufixo
sql-psa.goog., exclua a zona de DNS depois de verificar se a zona de DNS de peering é uma zona de DNS restante.Para excluir uma zona de DNS, use o comando
gcloud dns managed-zones delete:gcloud dns managed-zones delete ZONE_NAME
Substitua ZONE_NAME pelo nome da zona de DNS associada aos endpoints de gravação. Os valores são alfanuméricos e usam o seguinte formato:
cloud-sql-psa-dns-1234567890.
A seguir
- Saiba mais sobre a solução de problemas do Cloud SQL.