Diagnosticar problemas

Esta página contém uma lista dos problemas mais frequentes que você pode encontrar ao trabalhar com instâncias do Cloud SQL e as etapas que você pode seguir para solucioná-los. Consulte também as páginas Problemas conhecidos , Solução de problemas e Suporte .

Ver registros

Para ver informações sobre operações recentes, você pode visualizar os logs de operação da instância do Cloud SQL ou os logs de erro do MySQL .

Instância sem resposta

Se a sua instância parar de responder às conexões ou o desempenho for prejudicado, verifique se ela está em conformidade com as Diretrizes Operacionais . Caso contrário, ela não estará coberta pelo SLA do Cloud SQL .

Problemas de conexão

Consulte a página Depuração de problemas de conexão ou a seção Conectividade na página de solução de problemas para obter ajuda com problemas de conexão.

Problemas de instância

Backups

Para obter o melhor desempenho dos backups , mantenha o número de tabelas em um número razoável.

Para outros problemas de backup, consulte a seção Backups na página de solução de problemas.

Importação e exportação

As importações e exportações no Cloud SQL são as mesmas que usar o utilitário mysqldump , exceto que com o recurso de importação/exportação do Cloud SQL, você transfere dados usando um bucket do Cloud Storage.

Importações para o Cloud SQL e exportações a partir do Cloud SQL podem levar muito tempo para serem concluídas, dependendo do tamanho dos dados processados. Isso pode ter os seguintes impactos:

  • Não é possível interromper uma operação de instância de longa execução do Cloud SQL.
  • Você pode executar apenas uma operação de importação ou exportação por vez para cada instância, e uma importação ou exportação de longa duração bloqueia outras operações, como backups diários automatizados. Exportações sem servidor permitem que você execute outras operações, incluindo edição de instâncias, importação, failover e desbloqueio de backups diários automatizados.

Você pode diminuir o tempo necessário para concluir cada operação usando a funcionalidade de importação ou exportação do Cloud SQL com lotes menores de dados.

Para exportações, você pode executar a exportação de uma réplica de leitura ou usar a exportação sem servidor para minimizar o impacto no desempenho do banco de dados e permitir que outras operações sejam executadas na sua instância enquanto uma exportação estiver em execução.

Outros pontos a serem lembrados ao importar:

  • Se a sua importação estiver travando, pode ser devido a um erro de falta de memória (OOM). Se for esse o caso, você pode tentar usar comandos do MySQL diretamente para adicionar os parâmetros --extended-insert=FALSE --complete-insert . Esses parâmetros reduzem a velocidade da sua importação, mas também reduzem a quantidade de memória necessária para a importação.

Para outros problemas de importação e exportação, consulte a seção Importação e exportação na página de solução de problemas.

Espaço em disco

Se a sua instância atingir a quantidade máxima de armazenamento permitida, as gravações no banco de dados falharão. Se você excluir dados, por exemplo, removendo uma tabela, o espaço liberado não será refletido no Armazenamento Usado relatado da instância. Consulte a FAQ "Como posso recuperar o espaço de uma tabela removida?" para obter uma explicação sobre esse comportamento.

Atingir o limite máximo de armazenamento também pode fazer com que a instância fique travada na reinicialização.

Evite corrupção de dados

Evite colunas geradas

Devido a um problema no MySQL, o uso de colunas geradas pode resultar em corrupção de dados. Para mais informações, consulte o bug #82736 do MySQL .

Desligamentos limpos

Quando o Cloud SQL encerra uma instância (por exemplo, para manutenção), nenhuma nova conexão é enviada à instância e as conexões existentes são encerradas. O tempo que o mysqld tem para encerrar é limitado a 1 minuto. Se o encerramento não for concluído nesse tempo, o processo mysqld será interrompido à força. Isso pode resultar no aborto de gravações em disco no meio do processo.

Motores de banco de dados

O InnoDB é o único mecanismo de armazenamento suportado para instâncias do MySQL porque é mais resistente à corrupção de tabelas do que outros mecanismos de armazenamento do MySQL, como o MyISAM .

Por padrão, as tabelas do banco de dados Cloud SQL são criadas usando o mecanismo de armazenamento InnoDB. Se a sintaxe CREATE TABLE incluir uma opção ENGINE especificando um mecanismo de armazenamento diferente do InnoDB, por exemplo ENGINE = MyISAM , a tabela não será criada e você verá mensagens de erro como a seguinte:

ERROR 3161 (HY000): Storage engine MyISAM is disabled (Table creation is disallowed).

Você pode evitar esse erro removendo a opção ENGINE = MyISAM do comando CREATE TABLE . Isso criará a tabela com o mecanismo de armazenamento InnoDB.

Alterações nas tabelas do sistema

As tabelas do sistema MySQL utilizam o mecanismo de armazenamento MyISAM, incluindo todas as tabelas do banco de dados mysql , por exemplo, mysql.user e mysql.db . Essas tabelas são vulneráveis ​​a desligamentos incorretos; execute o comando FLUSH CHANGES após fazer alterações nessas tabelas. Se ocorrer corrupção do MyISAM, CHECK TABLE e REPAIR TABLE podem restaurá-lo ao estado correto (mas não salvar os dados).

Identificadores Globais de Transações (GTID)

Todas as instâncias do MySQL têm o GTID habilitado automaticamente. Ter o GTID habilitado protege contra perda de dados durante a criação de réplicas e failover, além de tornar a replicação mais robusta. No entanto, o GTID apresenta algumas limitações impostas pelo MySQL, conforme documentado no manual do MySQL . As seguintes operações transacionalmente inseguras não podem ser usadas com um servidor MySQL habilitado para GTID:

  • Instruções CREATE TABLE ... SELECT ;
  • Instruções CREATE TEMPORARY TABLE dentro de transações;
  • Transações ou instruções que afetam tabelas transacionais e não transacionais.

Se você usar uma transação transacionalmente insegura, verá uma mensagem de erro como o exemplo a seguir:

 Exception: SQLSTATE[HY000]: General error: 1786
 CREATE TABLE ... SELECT is forbidden when @@GLOBAL.ENFORCE_GTID_CONSISTENCY = 1.

Trabalhar com gatilhos e funções armazenadas

Se sua instância tiver o registro binário habilitado e você precisar trabalhar com gatilhos ou funções armazenadas, certifique-se de que sua instância tenha o sinalizador log_bin_trust_function_creators definido como on .

Estado suspenso

Há vários motivos pelos quais o Cloud SQL pode suspender uma instância, incluindo:

  • Problemas de faturamento

    Por exemplo, se o cartão de crédito da conta de cobrança do projeto tiver expirado, a instância poderá ser suspensa. Você pode verificar as informações de cobrança de um projeto acessando o Google Cloud página de faturamento do console, selecionando o projeto e visualizando as informações da conta de faturamento usada para o projeto. Após resolver o problema de faturamento, a instância retornará ao status executável em algumas horas.

  • Principais problemas com o Cloud Key Management Service

    Por exemplo, se a versão da chave do Cloud KMS usada para criptografar os dados do usuário na instância do Cloud SQL não estiver presente, o acesso à chave será revogado ou a chave será desativada ou excluída. Para obter mais informações, consulte Usando chaves de criptografia gerenciadas pelo cliente (CMEK) .

  • Questões legais

    Por exemplo, uma violação da Google Cloud A Política de Uso Aceitável pode causar a suspensão da instância. Para obter mais informações, consulte "Suspensões e Remoções" no Google Cloud Termos de Serviço .

  • Questões operacionais

    Por exemplo, se uma instância estiver presa em um loop de falha (ela trava durante a inicialização ou logo após a inicialização), o Cloud SQL poderá suspendê-la.

Enquanto uma instância estiver suspensa, você poderá continuar visualizando informações sobre ela ou excluí-la, caso problemas de cobrança tenham acionado a suspensão.

Usuários do Cloud SQL com pacotes de suporte Platinum, Gold ou Silver podem entrar em contato diretamente com nossa equipe de suporte sobre instâncias suspensas. Todos os usuários podem usar as orientações anteriores, juntamente com o fórum google-cloud-sql .

Desempenho

Visão geral

O Cloud SQL oferece suporte a cargas de trabalho de alto desempenho com até 60.000 IOPS e sem custo extra para E/S. O desempenho de IOPS e throughput depende do tamanho do disco, da contagem de vCPUs da instância e do tamanho do bloco de E/S, entre outros fatores.

O desempenho da sua instância também depende da sua escolha de tipo de armazenamento e carga de trabalho.

Saiba mais sobre:

Habilitar logs de consulta

Para ajustar o desempenho das suas consultas, você pode configurar o Cloud SQL para registrar consultas lentas adicionando os sinalizadores de banco de dados --log_output='FILE' e --slow_query_log=on à sua instância. Isso torna a saída do log disponível usando o Visualizador de Logs no Google Cloud console . Observe que se aplicam taxas de registro de observabilidade do Google Cloud .

Não defina log_output como TABLE . Isso pode causar problemas de conexão, conforme descrito em Dicas para trabalhar com sinalizadores .

Você pode consultar este tutorial para obter instruções sobre como registrar e monitorar consultas lentas do Cloud SQL para MySQL usando o Cloud Logging and Monitoring .

Habilitar monitoramento de bloqueio

Os monitores do InnoDB fornecem informações sobre o estado interno do mecanismo de armazenamento do InnoDB, que você pode usar no ajuste de desempenho.

Acesse a instância usando o cliente MySQL e obtenha a saída do monitor sob demanda:

SHOW ENGINE INNODB STATUS\G

Para explicações sobre as seções na saída do monitor, consulte InnoDB Standard Monitor e Lock Monitor Output .

Você pode habilitar os monitores InnoDB para que a saída seja gerada periodicamente em um arquivo ou tabela, com degradação do desempenho. Para mais informações, consulte Habilitando Monitores InnoDB .

Usar esquema de desempenho

O MySQL Performance Schema é um recurso para monitorar a execução do servidor MySQL em um nível baixo. A maneira mais acessível de consumir as estatísticas geradas no performance_schema é por meio da funcionalidade de Relatórios de Desempenho do MySQL Workbench .

Mantenha um número razoável de tabelas de banco de dados

As tabelas do banco de dados consomem recursos do sistema. Um número grande delas pode afetar o desempenho e a disponibilidade da instância, fazendo com que ela perca a cobertura do SLA. Saiba mais .

Dicas gerais de desempenho

. Para inserções, atualizações ou exclusões lentas do banco de dados, considere as seguintes ações:
  • Verifique a localização do gravador e do banco de dados; enviar dados a longas distâncias gera latência.

Para seleções lentas de banco de dados, considere o seguinte:

  • O armazenamento em cache é importante para o desempenho de leitura. Compare o tamanho do seu conjunto de dados com o tamanho da RAM da sua instância. O ideal é que todo o conjunto de dados ocupe 70% da RAM da instância. Nesse caso, as consultas não são limitadas ao desempenho de E/S. Caso contrário, considere aumentar o tamanho da RAM da sua instância.
  • Se sua carga de trabalho consistir em consultas que exigem muita CPU (classificação, expressões regulares, outras funções complexas), sua instância poderá ser limitada; aumente as vCPUs.
  • Verifique a localização do leitor e do banco de dados - a latência afeta o desempenho de leitura ainda mais do que o desempenho de gravação.
  • Investigue melhorias de desempenho não específicas do Cloud SQL, como adicionar indexação apropriada, reduzir dados verificados e evitar viagens de ida e volta extras.
  • Se você observar baixo desempenho na execução de consultas, use EXPLAIN . EXPLAIN é uma instrução que você adiciona a outras instruções, como SELECT, e retorna informações sobre como o MySQL executa a instrução. Ela funciona com SELECT, DELETE, INSERT, REPLACE e UPDATE. Por exemplo, EXPLAIN SELECT * FROM myTable; .

    Use EXPLAIN para identificar onde você pode:

    • Adicione índices às tabelas para melhorar o desempenho das consultas. Por exemplo, certifique-se de que cada campo usado como chave JOIN tenha um índice em ambas as tabelas.

    • Melhore as operações ORDER BY . Se EXPLAIN mostrar "Usando temporário; Usando filesort" na coluna Extra da saída, os resultados intermediários serão armazenados em um arquivo que será então classificado, o que geralmente resulta em baixo desempenho. Nesse caso, siga um dos seguintes passos:

      • Se possível, use índices em vez de classificação. Consulte Otimização ORDER BY para obter mais informações.

      • Aumente o tamanho da variável sort_buffer_size para a sessão de consulta.

      • Use menos RAM por linha declarando colunas apenas do tamanho necessário.

    Solução de problemas

    Para outros problemas do Cloud SQL, consulte a página de solução de problemas .

    Mensagens de erro

    Para mensagens de erro específicas da API, consulte a página de referência de mensagens de erro .

    Solucionar problemas de chaves de criptografia gerenciadas pelo cliente (CMEK)

    Operações do administrador do Cloud SQL, como criar, clonar ou atualizar, podem falhar devido a erros do Cloud KMS e funções ou permissões ausentes. Os motivos comuns para falhas incluem uma versão ausente da chave do Cloud KMS, uma versão desativada ou destruída da chave do Cloud KMS, permissões insuficientes do IAM para acessar a versão da chave do Cloud KMS ou a versão da chave do Cloud KMS estar em uma região diferente da instância do Cloud SQL. Use a tabela de solução de problemas a seguir para diagnosticar e resolver problemas comuns.

    Tabela de solução de problemas de chaves de criptografia gerenciadas pelo cliente

    Para este erro... O problema pode ser... Experimente isto...
    Conta de serviço por produto e por projeto não encontrada O nome da conta de serviço está incorreto. Certifique-se de ter criado uma conta de serviço para o projeto de usuário correto.

    ACESSE A PÁGINA DE CONTAS DE SERVIÇO .

    Não é possível conceder acesso à conta de serviço A conta de usuário não tem permissão para conceder acesso a esta versão de chave. Adicione a função de Administrador da Organização à sua conta de usuário ou serviço.

    IR PARA A PÁGINA DE CONTAS IAM

    A versão da chave do Cloud KMS foi destruída A versão chave é destruída. Se a versão da chave for destruída, você não poderá usá-la para criptografar ou descriptografar dados.
    A versão da chave do Cloud KMS está desabilitada A versão da chave está desativada. Reative a versão da chave do Cloud KMS.

    IR PARA A PÁGINA DE CHAVES DE CRIPTOMOEDA

    Permissão insuficiente para usar a chave do Cloud KMS A função cloudkms.cryptoKeyEncrypterDecrypter está ausente na conta de usuário ou serviço que você está usando para executar operações em instâncias do Cloud SQL, ou a versão da chave do Cloud KMS não existe. No Google Cloud projeto que hospeda a chave, adicione a função cloudkms.cryptoKeyEncrypterDecrypter à sua conta de usuário ou serviço.

    IR PARA A PÁGINA DE CONTAS IAM


    Se a função já tiver sido concedida à sua conta, consulte "Criando uma chave" para saber como criar uma nova versão de chave. Consulte a observação.
    A chave do Cloud KMS não foi encontrada A versão chave não existe. Crie uma nova versão de chave. Consulte Criação de uma chave . Consulte a nota.
    A instância do Cloud SQL e a versão da chave do Cloud KMS estão em regiões diferentes A versão da chave do Cloud KMS e a instância do Cloud SQL devem estar na mesma região. Não funciona se a versão da chave do Cloud KMS estiver em uma região global ou multirregional. Crie uma versão de chave na mesma região onde você deseja criar instâncias. Consulte Criação de uma chave . Consulte a observação.
    A versão da chave do Cloud KMS foi restaurada, mas a instância ainda está suspensa A versão da chave está desabilitada ou não concede permissões adequadas. Reative a versão da chave e conceda a função cloudkms.cryptoKeyEncrypterDecrypter à sua conta de usuário ou serviço no Google Cloud projeto que hospeda a chave.

    Tabela de solução de problemas de reencriptação

    Para este erro... O problema pode ser... Experimente isto...
    A recriptografia do recurso CMEK falhou porque a chave do Cloud KMS está inacessível. Certifique-se de que a versão da chave primária esteja habilitada e que a permissão tenha sido concedida corretamente. A versão da chave está desabilitada ou não concede permissões adequadas.

    Reative a versão da chave do Cloud KMS:

    IR PARA A PÁGINA DE CHAVES DE CRIPTOMOEDA

    No Google Cloud projeto que hospeda a chave, confirme se a função cloudkms.cryptoKeyEncrypterDecrypter foi concedida à sua conta de usuário ou serviço:

    IR PARA A PÁGINA DE CONTAS IAM

    A recriptografia do recurso CMEK falhou devido a um erro interno do servidor. Tente novamente mais tarde. Há um erro interno do servidor. Tente criptografar novamente. Para obter mais informações, consulte Recriptografar uma instância ou réplica existente habilitada para CMEK.