Solução de problemas do Cloud SQL

Esta página inclui dicas para solução de problemas do Cloud SQL para mecanismos de banco de dados compatíveis. Algumas dessas dicas se aplicam somente a mecanismos de banco de dados específicos, enquanto outras são comuns a todos.

Para dicas de solução de problemas para mecanismos de banco de dados específicos, consulte as páginas individuais deles:

Verifique se a pergunta ou o problema já foi resolvido em uma destas páginas:

Os tópicos desta página incluem:

Backup e recuperação

Problema Solução de problemas
Não é possível ver o status da operação atual. O console Google Cloud informa apenas o sucesso ou falha no momento da operação. Ele não foi criado para mostrar avisos ou outras atualizações.

Execute o comando gcloud sql operations list para listar todas as operações da instância do Cloud SQL especificada.

Você quer descobrir quem emitiu uma operação de backup sob demanda. A interface do usuário não mostra o usuário que iniciou uma operação.

Procure nos registros e filtre por texto para encontrar o usuário. Talvez seja necessário usar registros de auditoria para informações particulares. Os arquivos de registro relevantes incluem:

  • Se os registros de auditoria do Cloud estiverem ativados e você tiver as permissões necessárias para visualizá-los, cloudaudit.googleapis.com/activity também poderá estar disponível.
Depois que uma instância é excluída, não é possível fazer backup dela.

Se você excluir uma instância sem fazer um backup final dos dados, não será possível recuperar nada. No entanto, se você restaurar a instância, o Cloud SQL também vai restaurar os backups. Para mais informações sobre como recuperar uma instância excluída, consulte Reter backups após a exclusão da instância.

Se você tiver feito uma operação de exportação, crie uma nova instância e faça uma operação de importação para recriar o banco de dados. As exportações são gravadas no Cloud Storage e as importações são lidas de lá.

O backup automático fica paralisado por muitas horas e não pode ser cancelado. Os backups podem levar muito tempo, dependendo do tamanho do banco de dados.

Se você realmente precisa cancelar a operação, peça ao suporte ao cliente para aplicar force restart à instância.

Uma operação de restauração pode falhar quando um ou mais usuários referenciados no arquivo dump SQL não existem. Antes de restaurar um arquivo dump SQL, todos os usuários do banco de dados com objetos ou que receberam permissões para os objetos do banco de dados despejado precisam existir no banco de dados de destino. Caso contrário, a operação de restauração não recriará os objetos com a propriedade ou as permissões originais.

Crie os usuários do banco de dados antes de restaurar do dump SQL.

Você quer aumentar o número de dias em que pode manter backups automáticos, de sete para 30 dias ou mais. É possível configurar o número de backups automatizados que serão retidos. Os backups automatizados são removidos regularmente com base no valor de retenção configurado. Infelizmente, isso significa que os backups visíveis atuais são os únicos backups automatizados que podem ser usados para restaurar.

Para manter os backups indefinidamente, crie um backup sob demanda. Ele não é excluído da mesma forma que backups automáticos. Os backups sob demanda permanecem indefinidamente. Ou seja, eles permanecem até que sejam excluídos ou a instância a que pertencem seja excluída. Como esse tipo de backup não é excluído automaticamente, ele pode afetar o faturamento.

Um backup automático falhou e você não recebeu uma notificação por e-mail. Para que o Cloud SQL notifique você sobre o status do backup, configure um alerta com base em registros.
Uma instância está falhando repetidamente porque está alternando entre os estados de falha e de restauração de backup. As tentativas de conexão e uso do banco de dados após a restauração falham.
  • Pode haver muitas conexões abertas. Conexões em excesso podem resultar de erros que ocorrem no meio de uma conexão em que não há configurações autovacuum para limpar conexões inativas.
  • A alternância pode ocorrer se qualquer código personalizado estiver usando uma lógica de repetição que não pare após algumas falhas.
  • Pode haver muito tráfego. Use o pool de conexões e outras práticas recomendadas para conectividade.

O que tentar

  1. Verifique se o banco de dados está configurado para autovacuum.
  2. Verifique se há alguma lógica de repetição de conexão configurada no código personalizado.
  3. Reduza o tráfego até que o banco de dados seja recuperado e aumente lentamente o tráfego.
Você descobre que está faltando dados ao executar uma operação de backup/restauração. As tabelas foram criadas como não registradas. Por exemplo:

CREATE UNLOGGED TABLE ....

Estas tabelas não estão incluídas em uma restauração de um backup:

  • O conteúdo de tabelas não registradas não sobrevive ao failover na instância de alta disponibilidade.
  • Tabelas não registradas não sobrevivem a falhas postgres.
  • As tabelas não registradas não são replicadas para réplicas de leitura.
  • As tabelas não registradas são automaticamente excluídas durante a restauração do backup.

A solução é evitar o uso de tabelas não registradas se você quiser restaurar essas tabelas com um backup. Ao restaurar um banco de dados que já tem tabelas não registradas, é possível despejar o banco de dados em um arquivo e recarregar os dados depois de modificar o arquivo despejado para ALTER TABLE para SET LOGGED nessas tabelas.

Não é possível excluir uma instância quando você opta por fazer um backup final na exclusão da instância. Ao excluir uma instância, é necessário confirmar se você quer fazer um backup final dela antes da exclusão. Se você ativou o backup final usando a configuração de instância final-backup, a seleção feita ao excluir a instância precisa corresponder à configuração de instância do backup final definida ao ativar o backup final para sua instância. Para minimizar esse problema, faça uma das seguintes ações:
  • Defina o valor final do backup para corresponder à configuração de backup existente da instância.
  • Deixe o campo de backup final vazio ao excluir a instância. Se você deixar o campo em branco, o Cloud SQL usará a configuração final de backup definida nas configurações da instância para fazer um backup final e definir a retenção dele.
Para conferir a configuração final da instância de backup, consulte Acessar informações da instância.
Não foi possível criar uma instância de réplica depois de criar uma instância principal com a configuração de backup final. Se você criar uma instância com a configuração final de instância de backup ativada, atualize a política da organização de backup final para aplicar as configurações de backup somente à instância principal. Os backups finais não são compatíveis com instâncias de réplica.
Para mais informações, consulte Políticas da organização do Cloud SQL.

Clonar

Problema Solução de problemas
Ocorreu uma falha na clonagem com um erro constraints/sql.restrictAuthorizedNetworks. A operação de clonagem é bloqueada pela configuração Authorized Networks. Authorized Networks são configurados para endereços IP públicos na seção "Conectividade" do console Google Cloud , e a clonagem não é permitida devido a considerações de segurança.

Remova todas as entradas Authorized Networks da instância do Cloud SQL, se possível. Caso contrário, crie uma réplica sem nenhuma entrada Authorized Networks.

Mensagem de erro: Failed to create subnetwork. Couldn't find free blocks in allocated IP ranges. Please allocate new ranges for this service provider. Help Token: [help-token-id].

Você está tentando usar o console Google Cloud para clonar uma instância com um endereço IP particular, mas não especificou o intervalo de IP alocado que pretende usar e a instância de origem não foi criada com o intervalo especificado. Como resultado, a instância clonada é criada em um intervalo aleatório.

Use gcloud para clonar a instância e fornecer um valor para o parâmetro
--allocated-ip-range-name. Para mais informações, consulte Como clonar uma instância com um IP particular.

Conectar

Problema Solução de problemas
Aborted connection. O problema pode ser:
  • Instabilidade de rede.
  • Nenhuma resposta aos comandos de sinal de atividade do TCP (o cliente ou o servidor não é responsivo, possivelmente sobrecarregado)
  • A vida útil da conexão do mecanismo de banco de dados foi excedida e o servidor encerra a conexão.

Os aplicativos devem tolerar falhas de rede e seguir as práticas recomendadas, como a repetição e o pooling de conexões. A maioria dos pools de conexão identifica esses erros sempre que possível. Caso contrário, o aplicativo precisará tentar novamente ou falhar normalmente.

Para novas tentativas de conexão, recomendamos os métodos a seguir:

  1. Espera exponencial. Aumente o intervalo de tempo entre cada nova tentativa, exponencialmente.
  2. Adicione também a espera aleatória.

Combinar esses métodos ajuda a reduzir a limitação.

Mensagem de erro: Login failed for user "" Esse erro de login pode ocorrer durante a autenticação do ID do Microsoft Entra. Para resolver esse problema, verifique se existe um login do SQL Server para esse usuário do Microsoft Entra ID.
Problemas de conectividade de rede com instâncias de IP particular Você pode ter alguns dos seguintes problemas durante a configuração da integração:
  • Operações lentas para criar logins do Microsoft Entra ID
  • Não é possível criar logins do Microsoft Entra ID
  • Não é possível se conectar à instância usando a autenticação do Microsoft Entra ID

Para mais informações sobre como resolver esses problemas, consulte Solução de problemas da integração do Microsoft Entra ID.

FATAL: database 'user' does not exist. gcloud sql connect --user funciona apenas com o usuário postgres padrão.

Conecte-se com o usuário padrão e mude os usuários.

Você quer descobrir quem está conectado. Faça login no banco de dados e execute este comando:

SELECT datname,
usename,
application_name as appname,
client_addr,
state,
now() - backend_start as conn_age,
now() - state_change as last_activity_age
FROM pg_stat_activity
WHERE backend_type = 'client backend'
ORDER BY 6 DESC
LIMIT 20
   

Criar instâncias

Problema Solução de problemas
Mensagem de erro: The zone or region does not have sufficient resources to handle the request at the moment.

A zona selecionada não tem capacidade para os recursos solicitados ou o tipo de VM no momento da solicitação de criação da instância. Pode haver uma alta demanda operacional simultânea nesse local regional específico no momento da solicitação.

Para resolver esse problema, tente criar a instância em outra zona ou tente criar a instância na mesma zona que recebeu o erro em um horário diferente do dia.

Mensagem de erro: Failed to create subnetwork. Couldn't find free blocks in allocated IP ranges. Please allocate new ranges for this service provider Não há mais endereços disponíveis no intervalo de IP alocado. Pode haver vários cenários possíveis:
  • O tamanho do intervalo de IP alocado para a conexão de serviço particular é menor que /24.
  • O tamanho do intervalo de IP alocado para a conexão de serviço particular é muito pequeno para o número de instâncias do Cloud SQL.
  • O requisito sobre o tamanho do intervalo de IP alocado será maior se as instâncias forem criadas em várias regiões. Consulte tamanho do intervalo alocado.

Para resolver esse problema, é possível expandir o intervalo de IP alocado existente ou alocar um intervalo de IP adicional para a conexão de serviço particular. Para mais informações, consulte Alocar um intervalo de endereços IP.

Se você usou a sinalização --allocated-ip-range-name ao criar a instância do Cloud SQL, só vai poder expandir o intervalo de IP especificado.

Se você estiver alocando um novo intervalo, tenha cuidado para que a alocação não se sobreponha a nenhuma alocação atual.

Depois de criar um novo intervalo de IP, atualize o peering VPC com o comando a seguir:

gcloud services vpc-peerings update \
--service=servicenetworking.googleapis.com \
--ranges=OLD_RESERVED_RANGE_NAME,NEW_RESERVED_RANGE_NAME \
--network=VPC_NETWORK \
--project=PROJECT_ID \
--force
    

Se você estiver expandindo uma alocação atual, só aumente o intervalo de alocação em vez de diminuí-lo. Por exemplo, se a alocação original for 10.0.10.0/24, faça a nova alocação pelo menos 10.0.10.0/23.

Em geral, se começar com uma alocação de /24, diminuir o /mascaramento em 1 para cada condição (grupo de tipo de instância adicional, região adicional) é uma boa regra geral. Por exemplo, se você tentar criar os dois grupos de tipos de instância na mesma alocação, a mudança de /24 para /23 será suficiente.

Depois de expandir um intervalo de IP atual, use o seguinte comando para atualizar o peering VPC:

gcloud services vpc-peerings update \
--service=servicenetworking.googleapis.com \
--ranges=RESERVED_RANGE_NAME \
--network=VPC_NETWORK \
--project=PROJECT_ID
    
Mensagem de erro: Failed to create subnetwork. Router status is temporarily unavailable. Please try again later. Help Token: [token-ID] Tente criar a instância do Cloud SQL novamente.
Mensagem de erro: HTTPError 400: Invalid request: Incorrect Service Networking config for instance: PROJECT_ID:INSTANCE_NAME:SERVICE_NETWORKING_NOT_ENABLED.

Ative a API Service Networking usando o comando a seguir e tente criar a instância do Cloud SQL novamente.

gcloud services enable servicenetworking.googleapis.com \
--project=PROJECT_ID
    
Mensagem de erro: Failed to create subnetwork. Required 'compute.projects.get' permission for PROJECT_ID Quando você cria uma instância usando um endereço IP privado, uma conta de serviço é criada no momento certo usando a API Service Networking. Se você ativou recentemente a API Service Networking, a conta de serviço pode não ser criada e a criação da instância falhará. Nesse caso, você precisa esperar a conta de serviço se propagar pelo sistema ou adicioná-la manualmente com as permissões necessárias.
Mensagem de erro: More than 3 subject alternative names are not allowed. Você está tentando usar uma SAN personalizada para adicionar mais de três nomes de DNS ao certificado do servidor de uma instância do Cloud SQL. Não é possível adicionar mais de três nomes DNS à instância.
Mensagem de erro: Subject alternative names %s is too long. The maximum length is 253 characters. Verifique se os nomes DNS que você quer adicionar ao certificado do servidor de uma instância do Cloud SQL não têm mais de 253 caracteres.
Mensagem de erro: Subject alternative name %s is invalid.

Verifique se os nomes DNS que você quer adicionar ao certificado do servidor de uma instância do Cloud SQL atendem aos seguintes critérios:

  • Eles não têm caracteres curinga.
  • Não adicione pontos finais.
  • Eles atendem às especificações da RFC 1034.

Exportar

Problema Solução de problemas
HTTP Error 409: Operation failed because another operation was already in progress. Já existe uma operação pendente para sua instância. Só é permitida uma operação por vez. Tente fazer o pedido após a conclusão da operação atual.
HTTP Error 403: The service account does not have the required permissions for the bucket. Verifique se o bucket existe e se a conta de serviço da instância do Cloud SQL (que está fazendo a exportação) tem o papel Storage Object Creator (roles/storage.objectCreator) para permitir a exportação para o bucket. Consulte Papéis do IAM para o Cloud Storage.
A exportação de CSV funcionou, mas a exportação de SQL falhou. Os formatos CSV e SQL são exportados de maneira diferente. O formato SQL exporta todo o banco de dados e provavelmente leva mais tempo para ser concluído. O formato CSV permite definir quais elementos do banco de dados serão incluídos na exportação.

Use exportações de CSV para exportar apenas o que você precisa.

A exportação está demorando muito. O Cloud SQL não é compatível com operações síncronas simultâneas.

Use o descarregamento de exportação. Em um alto nível, no descarregamento de exportação, em vez de emitir uma exportação na instância de origem, o Cloud SQL ativa uma instância de descarregamento para realizar a exportação. O descarregamento de exportação tem várias vantagens, incluindo o aumento do desempenho na instância de origem e o desbloqueio de operações administrativas enquanto a exportação está em execução. Com o descarregamento de exportação, a latência total pode aumentar pelo tempo necessário para exibir a instância de descarregamento. Geralmente, para exportações de tamanho razoável, a latência não é significativa. No entanto, se a exportação for pequena o suficiente, será possível notar um aumento na latência.

Erro ao criar extensão. O arquivo dump contém referências a extensões não compatíveis.

Edite o arquivo dump para remover as referências.

Erro ao usar pg_dumpall. O uso do utilitário pg_dumpall com a sinalização --global exige o papel de superusuário, mas esse papel não é compatível com o Cloud SQL. Para evitar erros ao realizar operações de exportação que incluam nomes de usuários, use também a sinalização --no-role-passwords.
A operação de exportação expira antes de exportar qualquer coisa, e você vê a mensagem de erro Could not receive data from client: Connection reset by peer. Se o Cloud Storage não receber dados em um determinado período, geralmente em torno de sete minutos, a conexão será redefinida. É possível que a consulta de exportação inicial esteja demorando muito para ser executada.

Faça uma exportação manual usando a ferramenta pg_dump.

Você quer que as exportações sejam automatizadas. O Cloud SQL não oferece uma maneira de automatizar exportações.

É possível criar seu próprio sistema de exportação automatizada usando produtos do Google Cloud como Cloud Scheduler, Pub/Sub e funções do Cloud Run, semelhante a este artigo sobre como automatizar backups.

Principal externo

Problema Solução de problemas
Lost connection to MySQL server during query when dumping table. A origem pode ter ficado indisponível ou o dump continha pacotes muito grandes.

Verifique se a instância principal externa está disponível para conexão. Também é possível modificar os valores das sinalizações net_read_timeout e net_write_timeout na instância de origem para interromper o erro. Para mais informações sobre os valores permitidos para essas sinalizações, consulte Configurar sinalizações do banco de dados.

Para saber mais sobre como usar sinalizações mysqldump para migração de importação gerenciada, consulte Sinalizações de sincronização inicial permitidas e padrão

O despejo inicial falha com erros de tempo limite ou de conexão perdida (por exemplo, Dump timeout ou Lost connection to MySQL server). Esse erro pode ocorrer se uma ou mais instruções DDL interagirem com o processo de despejo paralelo, fazendo com que ele espere indefinidamente.

Resolução:não execute instruções DDL no banco de dados de origem durante a fase inicial de despejo. Antes de executar qualquer instrução DDL, reinicie a migração e aguarde a conclusão da fase de despejo inicial.

A migração inicial dos dados foi bem-sucedida, mas nenhum dado está sendo replicado.

Uma possível causa raiz pode ser sinalizações de replicação definidas pelo banco de dados de origem, o que faz com que algumas ou todas as alterações do banco de dados não sejam replicadas.

Verifique se as sinalizações de replicação, como binlog-do-db, binlog-ignore-db, replicate-do-db ou replicate-ignore-db não estão definidas de maneira conflitante.

Execute o comando show master status na instância principal para ver as configurações atuais.

A migração inicial de dados foi bem-sucedida, mas a replicação de dados deixa de funcionar após um tempo.

O que tentar

  • Verifique as métricas de replicação da instância de réplica na seção Cloud Monitoring do console Google Cloud .
  • Os erros da linha de execução de E/S do MySQL ou da linha de execução do SQL podem ser encontrados no Cloud Logging nos arquivos de registro mysql.err.
  • O erro também pode ser encontrado ao se conectar à instância da réplica. Execute o comando SHOW REPLICA STATUS e verifique os seguintes campos na saída:
    • Replica_IO_Running
    • Replica_SQL_Running
    • Last_IO_Error
    • Last_SQL_Error

Se você encontrar o erro Unknown database DATABASE_NAME on query. Error_code: MY-001049, a replicação falhou porque uma instrução SQL replicada tentou referenciar um banco de dados que não foi selecionado para a migração. Para recuperar a replicação, determine se o erro com base na mensagem é devido a DDL em um dos seguintes objetos:

  • Um evento ou uma rotina. É possível executar CALL mysql.skipReplicationError() na réplica, o que impede que o evento ou a rotina sejam replicados e retoma a replicação.
  • Uma restrição ou visualização de chave externa. Depois de determinar em qual banco de dados reside o objeto modificado pela instrução, você tem duas opções de recuperação. Você pode remover o banco de dados dos bancos de dados selecionados que estão sendo migrados ou executar CALL mysql.skipReplicationError() na réplica para retomar a replicação, ignorando a restrição ou a propagação da visualização para a réplica.
mysqld check failed: data disk is full. O disco de dados da instância da réplica está cheio.

Aumente o tamanho do disco da instância de réplica. Aumente o tamanho do disco manualmente ou ative o aumento automático de armazenamento.

Réplica externa

Problema Solução de problemas
Mensagem de erro: The slave is connecting ... master has purged binary logs containing GTIDs that the slave requires A instância principal do Cloud SQL tem backups automáticos e registros binários, e a recuperação pontual está ativada. Por isso, ela precisa ter registros suficientes para que a réplica possa acompanhar. No entanto, nesse caso, embora os registros binários existam, a réplica não sabe em qual linha começar a leitura.

Crie um novo arquivo dump usando as configurações de sinalização corretas e configure a réplica externa usando esse arquivo.

  1. Conecte-se ao cliente mysql por uma instância do Compute Engine.
  2. Execute o mysqldump e use as sinalizações --master-data=1 e --flush-privileges.

    Importante: não inclua a sinalização --set-gtid-purged=OFF.

    Saiba mais.

  3. Verifique se o arquivo dump criado contém a linha SET @@GLOBAL.GTID_PURGED='...'.
  4. Faça upload do arquivo dump para um bucket do Cloud Storage e configure a réplica usando o arquivo dump.

Sinalizações

Problema Solução de problemas

Alta disponibilidade

Problema Solução de problemas
Não é possível encontrar as métricas de um failover manual. Somente failovers automáticos entram nas métricas.
Os recursos da instância do Cloud SQL (CPU e RAM) estão quase com 100% de uso, fazendo com que a instância de alta disponibilidade fique inativa. O tamanho da máquina da instância é pequeno demais para a carga.

Edite a instância para fazer upgrade para um tamanho de máquina maior e receber mais CPUs e memória.

Importar

Problema Solução de problemas
HTTP Error 409: Operation failed because another operation was already in progress. Já existe uma operação pendente para sua instância. Só é permitida uma operação por vez. Tente fazer o pedido após a conclusão da operação atual.
A operação de importação está demorando muito. Muitas conexões ativas podem interferir nas operações de importação.

Feche operações não usadas. Verifique o uso de CPU e da memória da instância do Cloud SQL para garantir que haja muitos recursos disponíveis. A melhor maneira de garantir o máximo de recursos para a importação é reiniciar a instância antes de começar a operação.

Uma reinicialização:

  • fecha todas as conexões;
  • encerra todas as tarefas que possam estar consumindo recursos.
Uma operação de importação pode falhar quando um ou mais usuários referenciados no arquivo dump não existem. Antes de importar um arquivo dump, todos os usuários do banco de dados que têm objetos ou receberam permissões nos objetos no banco de dados despejado precisam existir no banco de dados de destino. Caso contrário, a operação de importação não recriará os objetos com a propriedade ou as permissões originais.

Crie os usuários do banco de dados antes de importar.

Uma operação de importação falha com um erro de que uma tabela não existe. As tabelas podem ter dependências de chave externa em outras tabelas e, dependendo da ordem das operações, pode ser que uma ou mais delas ainda não existam durante a operação de importação.

O que tentar

Adicione a seguinte linha no início do arquivo dump:

SET FOREIGN_KEY_CHECKS=0;
  

Além disso, adicione esta linha ao final do arquivo dump:

SET FOREIGN_KEY_CHECKS=1;
  

Essas configurações desativam as verificações de integridade de dados enquanto a operação de importação está em andamento e as reativam após o carregamento dos dados. Isso não afeta a integridade dos dados no banco de dados porque eles já foram validados durante a criação do arquivo dump.

Integrar com a Vertex AI

Problema Solução de problemas
Mensagem de erro: Google ML Integration API is not supported on shared core instance. Please upsize your machine type. Se você selecionou um núcleo compartilhado para o tipo de máquina da sua instância, não vai ser possível ativar a integração da Vertex AI no Cloud SQL. Faça upgrade do seu tipo de máquina para o núcleo dedicado. Para mais informações, consulte Tipo de máquina.
Mensagem de erro: Google ML Integration is unsupported for this maintenance version. Please follow https://cloud.google.com/sql/docs/mysql/self-service-maintenance to update the maintenance version of the instance. Para ativar a integração da Vertex AI no Cloud SQL, a versão de manutenção da instância precisa ser R20240130 ou posterior. Se quiser fazer upgrade da instância para esta versão, consulte Manutenção de autoatendimento.
Mensagem de erro: Cannot invoke ml_predict_row if 'cloudsql.enable_google_ml_integration' is off. A flag do banco de dados cloudsql.enable_google_ml_integration está desativada. Não é possível integrar o Cloud SQL à Vertex AI.

Para ativar essa sinalização, use o comando gcloud sql instances patch:

gcloud sql instances patch INSTANCE_NAME --database-flags cloudsql.enable_google_ml_integration=on

Substitua INSTANCE_NAME pelo nome da instância principal do Cloud SQL.
Mensagem de erro: Failed to connect to remote host: Connection refused.