Nesta página, mostramos uma lista dos problemas mais frequentes que podem ser encontrados ao trabalhar com instâncias do Cloud SQL, bem como os passos a serem seguidos para resolvê-los. Além disso, consulte as páginas Problemas conhecidos, Solução de problemas e Página de suporte.
Ver registros
Veja informações sobre operações recentes nos registros de operação da instância do Cloud SQL ou nos registros de erro do MySQL.
Instância que não responde
Se a instância parar de responder às conexões ou o desempenho estiver prejudicado, verifique se tudo está em conformidade com as Diretrizes operacionais. Caso contrário, o problema não estará coberto pelo SLA do Cloud SQL.
Problemas de conexão
Para ajuda com problemas de conexão, consulte a página Como depurar problemas de conexão ou a seção Conectividade na página de solução de problemas.
Problemas da instância
Backups
Para ter o melhor desempenho com backups, mantenha a quantidade 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.
Importar e exportar
As importações e exportações no Cloud SQL são as
mesmas de quando se usa o utilitário mysqldump
. No entanto, com o recurso de importação e
exportação do Cloud SQL, você transfere dados usando um bucket do Cloud Storage.
A conclusão das importações para o Cloud SQL e as exportações para fora dele pode levar muito tempo, dependendo do tamanho dos dados que estão sendo processados. Esse processo pode ter os seguintes impactos:
- Não é possível interromper uma operação de instância do Cloud SQL de longa duração.
- Será possível 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 bloqueará outras operações, por exemplo, backups automatizados diários. As exportações sem servidor permitem executar outras operações, entre elas a edição de instâncias, importação, failover e desbloqueio de backups automatizados diários.
É possível diminuir o tempo necessário para concluir cada operação usando a função de importação ou exportação do Cloud SQL com lotes menores de dados.
Para exportações, é possível exportar a partir 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 está em execução.
Outros fatores a considerar durante a importação:
- Se a importação estiver falhando, talvez seja por causa de um erro de falta de memória (OOM, na sigla em inglês).
Se esse for o caso, tente usar comandos do MySQL diretamente para adicionar os
parâmetros
--extended-insert=FALSE --complete-insert
. Esses parâmetros reduzem a velocidade da importação, mas também reduzem a quantidade de memória necessária.
Para outros problemas de importação e exportação, consulte a seção Importar e exportar na página de solução de problemas.
Espaço em disco
Se a sua instância atingir o armazenamento máximo permitido, as gravações no banco de dados não serão feitas. Se você excluir dados, por exemplo, eliminando uma tabela, o espaço liberado não será refletido no Armazenamento usado relatado da instância. Veja uma explicação desse comportamento nas "Perguntas frequentes" Como recuperar o espaço de uma tabela eliminada?.Atingir o limite máximo de armazenamento também pode fazer com que a instância fique travada na reinicialização.
Evitar a corrupção de dados
Evite colunas geradas
Devido a um problema no MySQL, o uso de colunas geradas pode causar corrupção de dados. Para mais informações, consulte o bug nº 82736 do MySQL.
Encerramentos limpos
Quando o Cloud SQL encerra uma instância, por exemplo, para manutenção, novas conexões não são enviadas à instância. Além disso, as conexões existentes são encerradas. O tempo fornecido ao mysqld para o encerramento é limitado a 1 minuto. Se o encerramento não for concluído nesse período, o processo mysqld será interrompido de modo forçado. Isso pode fazer com que gravações de disco sejam abortadas antes da conclusão.
Mecanismos de banco de dados
O InnoDB é o único mecanismo de armazenamento compatível com instâncias do MySQL porque ele é mais resistente ao corrompimento de tabelas do que outros mecanismos de armazenamento MySQL, como o MyISAM.
Por padrão, as tabelas de banco de dados do Cloud SQL são criadas com o mecanismo de armazenamento InnoDB. Se a sintaxe CREATE TABLE
incluir uma opção
ENGINE
especificando um mecanismo de armazenamento que não seja o InnoDB, por exemplo,
ENGINE = MyISAM
, a tabela não será criada e você verá mensagens de erro
como:
ERROR 3161 (HY000): Storage engine MyISAM is disabled (Table creation is disallowed).
Para evitar esse erro, remova a opção ENGINE = MyISAM
do
comando CREATE TABLE
. Assim, a tabela será criada com o mecanismo de armazenamento
InnoDB.
Alterações nas tabelas do sistema
As tabelas do sistema do MySQL usam 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 encerramentos com erros. Emita o comando
FLUSH CHANGES
depois de fazer alterações nessas tabelas. Em caso de corrompimento do
MyISAM, CHECK TABLE
e REPAIR TABLE
podem fazer o retorno para um ponto de bom estado,
mas sem salvar dados.
Identificadores de transações globais (GTID, na sigla em inglês)
Todas as instâncias do MySQL têm o GTID ativado automaticamente. O GTID oferece proteção contra perda de dados durante a criação de réplicas e failover e torna a replicação mais robusta. No entanto, ele apresenta algumas limitações impostas pelo MySQL, conforme documentado no manual do MySQL. As operações transacionais não seguras a seguir não podem ser usadas em um servidor MySQL com GTID ativado:
- 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 usar uma transação não segura, você verá uma mensagem de erro como:
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 a instância tiver a geração de registros binária ativada e você precisar trabalhar com
gatilhos ou funções armazenadas, verifique se a instância tem a
sinalização log_bin_trust_function_creators
definida como on
.
Estado suspenso
Há vários motivos pelos quais o Cloud SQL pode suspender uma instância, entre os quais:
Problemas de faturamento
Por exemplo, se o cartão de crédito da conta de faturamento do projeto tiver expirado, a instância poderá ser suspensa. Verifique as informações de faturamento de um projeto acessando a página de faturamento do Console do Google Cloud, basta selecionar o projeto e visualizar as informações da conta de faturamento usada no projeto. Depois de resolver o problema de faturamento, a instância retorna ao status executável em algumas horas.
Problemas com chaves no 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 será desativada ou excluída. Para mais informações, consulte Como usar chaves de criptografia gerenciadas pelo cliente (CMEK).
Problemas jurídicos
Por exemplo, uma violação da política de uso aceitável do Google Cloud pode causar a suspensão da instância. Para mais informações, consulte "Suspensões e remoções" nos Termos de Serviço do Google Cloud.
Problemas operacionais
Por exemplo, se uma instância estiver presa em um ciclo de falha (ela falha durante ou logo após a inicialização), o Cloud SQL poderá suspendê-la.
Durante a suspensão de uma instância, é possível continuar visualizando informações sobre ela ou excluí-la, caso a suspensão tenha sido acionada por problemas de faturamento.
Os usuários do Cloud SQL com pacotes de suporte Platinum, Gold ou Silver podem contatar a equipe de suporte diretamente sobre instâncias suspensas. Todos os usuários podem usar a orientação anterior com o fórum google-cloud-sql.
Desempenho
Visão geral
O Cloud SQL oferece é compatível com cargas de trabalho de alto desempenho com até 60.000 IOPS sem custo extra por E/S. O desempenho das IOPS e da capacidade depende do tamanho do disco, do número de vCPUs da instância, do tamanho do bloco de E/S, entre outros fatores.
O desempenho da instância também depende da opção de armazenamento e da carga de trabalho.
Saiba mais sobre estas situações:
- Discos permanentes e desempenho
- Métricas de desempenho e limitação
- Como otimizar o desempenho do disco
- Outros fatores que afetam o desempenho
Ativar registros de consulta
Para ajustar o desempenho das consultas, configure o
Cloud SQL para registrar consultas lentas
adicionando as sinalizações do banco de dados
--log_output='FILE'
e --slow_query_log=on
à instância.
Isso disponibiliza a saída de registro usando o
visualizador de registros no Console do Google Cloud.
Lembre-se que as cobranças da geração de registros do Google Cloud Observability são aplicáveis.
Não defina log_output como TABLE
. Isso pode causar problemas de conexão
descritos em
Dicas para trabalhar com sinalizações.
Veja este tutorial para instruções sobre como registrar e monitorar consultas lentas do Cloud SQL para MySQL usando o Cloud Logging and Monitoring.
Ativar o monitoramento de bloqueio
Os monitores do InnoDB fornecem informações sobre o estado interno do mecanismo de armazenamento InnoDB, que você pode usar no ajuste de desempenho.
Acesse a instância usando o MySQL Client para receber os resultados da monitoração sob demanda:
SHOW ENGINE INNODB STATUS\G
Para ver explicações sobre as seções dos resultados de monitoramento, consulte Saída do monitor padrão e do monitor de bloqueio do InnoDB.
É possível ativar monitores do InnoDB para que a saída seja gerada periodicamente em um arquivo ou tabela, com degradação no desempenho. Para conferir mais informações, veja Ativar monitores do InnoDB.
Usar esquema de desempenho
O MySQL Performance Schema é um recurso para monitorar a execução do MySQL Server em um nível baixo. A maneira mais acessível de consumir as estatísticas geradas em performance_schema é pela funcionalidade Relatórios de desempenho do MySQL Workbench.
Mantenha um número razoável de tabelas de banco de dados
As tabelas de banco de dados consomem recursos do sistema. Um grande número pode afetar o desempenho e a disponibilidade da instância e fazer com que a instância perca a cobertura do SLA. Saiba mais.
Dicas de desempenho geral
. Para atualizações, exclusões ou inserções lentas no banco de dados, considere as seguintes ações:- Verifique as localizações do gravador e do banco de dados. O envio de dados de longa distância introduz latência.
Para seleções lentas do banco de dados, considere o seguinte:
- O armazenamento em cache é importante para o desempenho de leitura. Compare o tamanho do conjunto de dados com a capacidade de RAM da instância. O ideal é que todo o conjunto de dados se ajuste a 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 instância.
- Se a carga de trabalho consistir em consultas com uso intensivo de CPU (classificação, expressões regulares, outras funções complexas), a instância poderá ser limitada. Aumente o nível.
Caso você perceba um desempenho ruim na execução de consultas, use
EXPLAIN
. EXPLAIN é uma instrução adicionada a
outras, 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:
adicionar índices a tabelas e melhorar o desempenho da consulta. Por exemplo, garanta que todos os campos usados como chave JOIN tenham um índice nas duas tabelas.
melhorar as operações
ORDER BY
. SeEXPLAIN
mostrar "Using temporary; Using filesort" na coluna Extra da saída, os resultados intermediários serão armazenados em um arquivo que será classificado, o que geralmente resulta em baixo desempenho. Nesse caso, execute uma das seguintes etapas:Se possível, use índices em vez de classificar. Veja Otimização do comando ORDER BY para saber mais informações.
Aumente o tamanho da variável
sort_buffer_size
para a sessão de consulta.Use menos memória RAM por linha, declarando colunas somente com o tamanho necessário.
Resolver problemas
Para outros problemas com o Cloud SQL, consulte a página de solução de problemas.
Mensagens de erro
Para ver mensagens de erro específicas da API, consulte a página de referência Mensagens de erro.
Resolver problemas de chaves de criptografia gerenciadas pelo cliente (CMEK)
As operações de administrador do Cloud SQL (como criação, clonagem ou atualização) podem falhar devido a erros do Cloud KMS e ausência de papéis ou permissões. Motivos comuns de falha incluem uma versão ausente da chave do Cloud KMS, uma versão da chave do Cloud KMS desativada ou destruída, permissões de IAM insuficientes para acessar a versão da chave do Cloud KMS ou a versão da chave do Cloud KMS está em uma região diferente da instância do Cloud SQL. Use a seguinte tabela de solução de problemas 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... | Tente o seguinte... |
---|---|---|
Conta de serviço por produto, 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.
|
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 Administrador da organização em sua conta de usuário ou serviço.
|
A versão da chave do Cloud KMS foi destruída | A versão da chave foi 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á desativada | A versão da chave está desativada. | Reative a versão da chave do Cloud KMS.
|
Permissão insuficiente para usar a chave do Cloud KMS | O papel 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 projeto do Google Cloud que hospeda a chave, adicione o papel cloudkms.cryptoKeyEncrypterDecrypter à sua conta de usuário ou serviço.
ACESSAR A PÁGINA "CONTAS DE IAM" Se o papel já tiver sido concedido à sua conta, consulte Como criar uma chave para saber como criar uma nova versão da chave. Consulte a observação. |
A chave do Cloud KMS não foi encontrada | A versão da chave não existe. | Crie uma nova versão de chave. Consulte Como criar uma chave. Consulte a observação. |
A instância do Cloud SQL e a versão da chave do Cloud KMS estão em diferentes regiões | A versão da chave do Cloud KMS e a instância do Cloud SQL precisam estar na mesma região. Ela não funcionará se a versão da chave do Cloud KMS estiver em uma região global ou em várias regiões. | Crie uma versão de chave na mesma região em que você quer criar instâncias. Consulte Como criar uma chave. Consulte a observação. |
A versão da chave do Cloud KMS é restaurada, mas a instância ainda está suspensa | A versão da chave está desativada ou não concede as permissões adequadas. | Reative a versão da chave e conceda o papel cloudkms.cryptoKeyEncrypterDecrypter à conta de usuário ou serviço no projeto do Google Cloud que hospeda a chave. |
Tabela de solução de problemas de nova criptografia
Para este erro... | O problema pode ser... | Tente o seguinte... |
---|---|---|
A nova criptografia de recursos do CMEK falhou porque a chave do Cloud KMS está inacessível. Verifique se a versão da chave primária está ativada e se a permissão foi concedida corretamente. | A versão da chave está desativada ou não concede as permissões adequadas. | Reative a versão da chave do Cloud KMS: ACESSAR A PÁGINA "CHAVES DE CRIPTOGRAFIA" No projeto do Google Cloud que hospeda a chave, confirme se o papel |
A nova criptografia de recursos do CMEK falhou devido a um erro interno do servidor. Tente de novo mais tarde | Há um erro interno do servidor. | Tente fazer a criptografia novamente. Para mais informações, consulte Criptografar novamente uma réplica ou instância atual ativada para CMEK |