Esta página contém uma lista dos problemas mais frequentes que pode encontrar ao trabalhar com instâncias do Cloud SQL e os passos que pode seguir para os resolver. Reveja também as páginas Problemas conhecidos, Resolução de problemas e Página de apoio técnico.
Ver registos
Para ver informações sobre operações recentes, pode ver os registos de operações da instância do Cloud SQL ou os registos de erros do MySQL.
A instância não responde
Se a sua instância deixar de responder a ligações ou o desempenho for reduzido, certifique-se de que está em conformidade com as diretrizes operacionais. Se não estiver em conformidade com estas diretrizes, não é abrangido pelo ANS do Cloud SQL.
Problemas de ligação
Consulte a página Resolução de problemas de ligação ou a secção Conetividade na página de resolução de problemas para obter ajuda com problemas de ligação.
Problemas de instâncias
Cópias de segurança
Para o melhor desempenho das cópias de segurança, mantenha o número de tabelas num número razoável.
Para outros problemas de cópias de segurança, consulte a secção Cópias de segurança na página de resolução de problemas.
Importação e exportação
As importações e exportações no Cloud SQL são iguais à utilização do utilitário mysqldump
, exceto que, com a funcionalidade de importação/exportação do Cloud SQL, transfere dados através de um contentor do Cloud Storage.
As importações para o Cloud SQL e as exportações do Cloud SQL podem demorar muito tempo a serem concluídas, dependendo do tamanho dos dados que estão a ser processados. Isto pode ter os seguintes impactos:
- Não pode parar uma operação de instância do Cloud SQL de execução prolongada.
- Só pode realizar uma operação de importação ou exportação de cada vez para cada instância, e uma importação ou exportação de longa duração bloqueia outras operações, como as cópias de segurança automáticas diárias. As exportações sem servidor permitem-lhe executar outras operações, incluindo a edição de instâncias, a importação, a comutação por falha e o desbloqueio de cópias de segurança automáticas diárias.
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 de dados mais pequenos.
Para exportações, pode efetuá-las a partir de uma réplica de leitura ou usar a exportação sem servidor para minimizar o impacto no desempenho da base de dados e permitir que outras operações sejam executadas na sua instância enquanto uma exportação está em execução.
Outros pontos a ter em atenção ao importar:
- Se a importação estiver a falhar, pode dever-se a um erro de falta de memória (OOM).
Se for este o caso, pode tentar usar os comandos do MySQL diretamente para adicionar os parâmetros
--extended-insert=FALSE --complete-insert
. Estes parâmetros reduzem a velocidade da importação, mas também reduzem a quantidade de memória que a importação requer.
Para outros problemas de importação e exportação, consulte a secção Importação e exportação na página de resolução de problemas.
Espaço em disco
Se a sua instância atingir a quantidade máxima de armazenamento permitida, as gravações na base de dados falham. Se eliminar dados, por exemplo, ao eliminar uma tabela, o espaço libertado não se reflete no armazenamento usado comunicado da instância. Consulte as Perguntas frequentes Como posso reaver o espaço de uma tabela eliminada? para uma explicação deste comportamento.Atingir o limite máximo de armazenamento também pode fazer com que a instância fique bloqueada no reinício.
Evite a corrupção de dados
Evite colunas geradas
Devido a um problema no MySQL, a utilização de colunas geradas pode resultar na corrupção de dados. Para mais informações, consulte o erro n.º 82736 do MySQL.
Encerramentos limpos
Quando o Cloud SQL encerra uma instância (por exemplo, para manutenção), não são enviadas novas ligações para a instância e as ligações existentes são terminadas. O tempo que o mysqld tem para encerrar está limitado a 1 minuto. Se o encerramento não for concluído nesse período, o processo mysqld é parado à força. Isto pode resultar na anulação das gravações no disco a meio do processo.
Motores de base de dados
O InnoDB é o único motor de armazenamento suportado para instâncias do MySQL, porque é mais resistente à corrupção de tabelas do que outros motores de armazenamento do MySQL, como o MyISAM.
Por predefinição, as tabelas da base de dados do Cloud SQL são criadas com o motor de armazenamento InnoDB. Se a sintaxe CREATE TABLE
incluir uma opção ENGINE
que especifique um motor de armazenamento diferente do InnoDB, por exemplo
ENGINE = MyISAM
, a tabela não é criada e são apresentadas mensagens de erro
como no exemplo seguinte:
ERROR 3161 (HY000): Storage engine MyISAM is disabled (Table creation is disallowed).
Pode evitar este erro removendo a opção ENGINE = MyISAM
do comando CREATE TABLE
. Ao fazê-lo, cria a tabela com o motor de armazenamento InnoDB.
Alterações às tabelas do sistema
As tabelas do sistema MySQL usam o motor de armazenamento MyISAM, incluindo todas as tabelas na base de dados mysql
, por exemplo, mysql.user
e mysql.db
. Estas tabelas são vulneráveis a encerramentos incorretos. Emita o comando FLUSH CHANGES
depois de fazer alterações a estas tabelas. Se ocorrer uma corrupção do MyISAM, o CHECK TABLE
e o REPAIR TABLE
podem repor o sistema num bom estado (mas não guardam os dados).
Identificadores de transações globais (GTID)
Todas as instâncias do MySQL têm o GTID ativado automaticamente. A ativação do GTID protege contra a perda de dados durante a criação de réplicas e a comutação por falha, e torna a replicação mais robusta. No entanto, o GTID tem algumas limitações impostas pelo MySQL, conforme documentado no manual do MySQL. Não é possível usar as seguintes operações transacionalmente inseguras com um servidor MySQL com GTID ativado:
CREATE TABLE ... SELECT
extratos;CREATE TEMPORARY TABLE
extratos dentro das transações;- Transações ou declarações que afetam tabelas transacionais e não transacionais.
Se usar uma transação insegura do ponto de vista transacional, é apresentada uma mensagem de erro como no seguinte exemplo:
Exception: SQLSTATE[HY000]: General error: 1786
CREATE TABLE ... SELECT is forbidden when @@GLOBAL.ENFORCE_GTID_CONSISTENCY = 1.
Trabalhe com acionadores e funções armazenadas
Se a sua instância tiver o registo binário ativado e precisar de trabalhar com acionadores ou funções armazenadas, certifique-se de que a flag log_bin_trust_function_creators
está definida como on
.
Estado de suspensão
Existem vários motivos pelos quais o Cloud SQL pode suspender uma instância, incluindo:
Problemas de faturação
Por exemplo, se o cartão de crédito da conta de faturação do projeto tiver expirado, a instância pode ser suspensa. Pode verificar as informações de faturação de um projeto acedendo à Google Cloud página de faturação da consola, selecionando o projeto e vendo as informações da conta de faturação usadas para o projeto. Depois de resolver o problema de faturação, a instância volta ao estado executável no prazo de algumas horas.
Problemas com o Cloud Key Management Service
Por exemplo, se a versão da chave do Cloud KMS usada para encriptar os dados do utilizador na instância do Cloud SQL não estiver presente, o acesso à chave for revogado ou se a chave for desativada ou eliminada. Para mais informações, consulte o artigo Usar chaves de encriptação geridas pelo cliente (CMEK).
Problemas legais
Por exemplo, uma violação da Google Cloud Política de Uso Autorizado pode fazer com que a instância seja suspensa. Para mais informações, consulte a secção "Suspensions and Removals" (Suspensions and Removals) nos Google Cloud Termos de Utilização.
Problemas operacionais
Por exemplo, se uma instância estiver bloqueada num ciclo de falhas (falha ao iniciar ou imediatamente após o início), o Cloud SQL pode suspendê-la.
Enquanto uma instância estiver suspensa, pode continuar a ver informações sobre a mesma ou eliminá-la, se os problemas de faturação tiverem acionado a suspensão.
Os utilizadores do Cloud SQL com pacotes de apoio técnico Platinum, Gold ou Silver podem contactar diretamente a nossa equipa de apoio técnico acerca de instâncias suspensas. Todos os utilizadores podem usar as orientações anteriores juntamente com o fórum google-cloud-sql.
Desempenho
Vista geral
O Cloud SQL suporta cargas de trabalho com utilização intensiva do desempenho com até 60 000 IOPS e sem custos adicionais para E/S. O desempenho de IOPS e débito depende do tamanho do disco, da quantidade 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 do tipo de armazenamento e da carga de trabalho.
Saiba mais sobre:
- Discos persistentes e desempenho.
- Métricas de desempenho e limitação.
- Otimizar o desempenho do disco.
- Outros fatores que afetam o desempenho.
Ative os registos de consultas
Para otimizar o desempenho das suas consultas, pode configurar o Cloud SQL para registar consultas lentas adicionando as flags da base de dados
--log_output='FILE'
e --slow_query_log=on
à sua instância.
Isto disponibiliza o resultado do registo através do Visualizador de registos na Google Cloud consola.
Tenha em atenção que se aplicam custos de registo do Google Cloud Observability.
Não defina log_output como TABLE
. Esta ação pode causar problemas de ligação, conforme descrito em Sugestões para trabalhar com flags.
Pode consultar este tutorial para ver instruções sobre como registar e monitorizar consultas lentas do Cloud SQL para MySQL através do Cloud Logging e Monitoring.
Ative a monitorização de fechaduras
Os monitores do InnoDB fornecem informações sobre o estado interno do motor de armazenamento do InnoDB, que pode usar no ajuste de desempenho.
Aceda à instância através do cliente MySQL e obtenha a saída do monitor a pedido:
SHOW ENGINE INNODB STATUS\G
Para ver explicações das secções na saída do monitor, consulte o artigo Saída do monitor padrão e do monitor de bloqueios do InnoDB.
Pode ativar os monitores do InnoDB para que o resultado seja gerado periodicamente num ficheiro ou numa tabela, com degradação do desempenho. Para mais informações, consulte o artigo Ativar monitores InnoDB.
Use o esquema de desempenho
O esquema de desempenho do MySQL é uma funcionalidade para monitorizar a execução do servidor MySQL a um nível baixo. A forma mais acessível de consumir as estatísticas geradas no performance_schema é através da funcionalidade MySQL Workbench Performance Reports.
Mantenha um número razoável de tabelas de base de dados
As tabelas de base de dados consomem recursos do sistema. Um número elevado pode afetar o desempenho e a disponibilidade da instância, e fazer com que a instância perca a respetiva cobertura do SLA. Saiba mais.
Sugestões gerais de desempenho
. Para inserções, atualizações ou eliminações lentas na base de dados, considere as seguintes ações:- Verifique as localizações do escritor e da base de dados. O envio de dados a uma longa distância introduz latência.
Para seleções de base de dados lentas, 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. Idealmente, o conjunto de dados completo ajusta-se a 70% da RAM da instância, caso em que as consultas não estão restritas ao desempenho de E/S. Caso contrário, pondere aumentar a quantidade de RAM da sua instância.
- Se a sua carga de trabalho consistir em consultas intensivas da CPU (ordenação, expressões regulares e outras funções complexas), a sua instância pode ser limitada; aumente as CPUs virtuais.
Se observar um desempenho fraco na execução de consultas, use
EXPLAIN
. EXPLAIN é uma declaração que adiciona a outras declarações, como SELECT, e devolve informações sobre como o MySQL executa a declaração. Funciona com SELECT, DELETE, INSERT, REPLACE e UPDATE. Por exemplo, EXPLAIN SELECT * FROM myTable;
.
Use o código EXPLAIN
para identificar onde pode:
Adicione índices às tabelas para melhorar o desempenho das consultas. Por exemplo, certifique-se de que todos os campos que usa como chave JOIN têm um índice em ambas as tabelas.
Melhore as
ORDER BY
operações. SeEXPLAIN
mostrar "Using temporary; Using filesort" na coluna Extra da saída, significa que os resultados intermédios são armazenados num ficheiro que é, em seguida, ordenado, o que geralmente resulta num desempenho fraco. Neste caso, siga um dos seguintes passos:Se possível, use índices em vez de ordenação. Consulte o artigo ORDER BY Optimization para 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 tão grandes quanto necessário.
Resolver problemas
Para outros problemas do Cloud SQL, consulte a página de resolução de problemas.
Mensagens de erro
Para mensagens de erro específicas da API, consulte a página de referência Mensagens de erro.
Resolva problemas com as chaves de encriptação geridas pelo cliente (CMEK)
As operações de administrador do Cloud SQL, como criar, clonar ou atualizar, podem falhar devido a erros do Cloud KMS e funções ou autorizações em falta. Os motivos comuns para a falha incluem uma versão da chave do Cloud KMS em falta, uma versão da chave do Cloud KMS desativada ou destruída, autorizações do IAM insuficientes para aceder à versão da chave do Cloud KMS ou a versão da chave do Cloud KMS está numa região diferente da instância do Cloud SQL. Use a tabela de resolução de problemas seguinte para diagnosticar e resolver problemas comuns.
Tabela de resolução de problemas de chaves de encriptação geridas pelo cliente
Para este erro… | O problema pode ser... | Experimente isto… |
---|---|---|
Não foi encontrada uma conta de serviço por produto e por projeto | O nome da conta de serviço está incorreto. | Certifique-se de que criou uma conta de serviço para o projeto de utilizador correto.
|
Não é possível conceder acesso à conta de serviço | A conta de utilizador não tem autorização para conceder acesso a esta versão da chave. | Adicione a função de administrador da organização à sua conta de utilizador ou de serviço.
|
A versão da chave do Cloud KMS é destruída | A versão da chave é destruída. | Se a versão da chave for destruída, não a pode usar para encriptar nem desencriptar 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.
|
Autorização insuficiente para usar a chave do Cloud KMS | A função cloudkms.cryptoKeyEncrypterDecrypter está em falta no utilizador ou na conta de serviço que está a usar 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 aloja a chave, adicione a função
cloudkms.cryptoKeyEncrypterDecrypter ao seu utilizador ou conta de serviço.
ACEDA À PÁGINA DE CONTAS DO IAM Se a função já tiver sido concedida à sua conta, consulte Criar uma chave para saber como criar uma nova versão da chave. Ver nota. |
Não foi possível encontrar a chave do Cloud KMS | A versão da chave não existe. | Crie uma nova versão da chave. Consulte o artigo Criar uma chave. Ver 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 têm de estar na mesma região. Não funciona se a versão da chave do Cloud KMS estiver numa região global ou em várias regiões. | Crie uma versão da chave na mesma região onde quer criar instâncias. Consulte o artigo Criar uma chave. Ver nota. |
A versão da chave do Cloud KMS é restaurada, mas a instância continua suspensa | A versão da chave está desativada ou não concede as autorizações adequadas. | Volte a ativar a versão da chave e conceda a função cloudkms.cryptoKeyEncrypterDecrypter ao utilizador ou à conta de serviço no projeto que aloja a chave. Google Cloud |
Tabela de resolução de problemas de reencriptação
Para este erro… | O problema pode ser... | Experimente isto… |
---|---|---|
A reencriptação do recurso CMEK falhou porque a chave do Cloud KMS está inacessível. Certifique-se de que a versão da chave principal está ativada e que a autorização foi concedida corretamente. | A versão da chave está desativada ou não concede as autorizações adequadas. | Reative a versão da chave do Cloud KMS: ACEDER À PÁGINA DE CHAVES CRIPTOGRÁFICAS No Google Cloud projeto que aloja a chave, confirme se a função
|
A reencriptação de recursos da CMEK falhou devido a um erro interno do servidor. Tente novamente mais tarde | Ocorreu um erro interno do servidor. | Tente voltar a encriptar. Para mais informações, consulte o artigo Volte a encriptar uma instância ou uma réplica existente ativada com CMEK |