Perguntas frequentes sobre o Cloud SQL para MySQL

Sobre

O que é o Cloud SQL?
O Cloud SQL é um serviço que oferece bancos de dados SQL totalmente gerenciados na nuvem. Ele fornece bancos de dados do PostgreSQL, SQL Server e MySQL.
Quais são os benefícios de usar o Cloud SQL?
O Cloud SQL permite delegar ao Google tarefas rotineiras, mas necessárias e muitas vezes demoradas (como aplicar patches e atualizações, gerenciar backups e configurar replicações), para você se concentrar na criação de aplicativos incríveis. Como usamos protocolos padrão de transferência, é possível se conectar de praticamente qualquer aplicativo, em qualquer lugar.
Quais versões do banco de dados estão disponíveis com o Cloud SQL? Como as atualizações são gerenciadas?

O Cloud SQL para MySQL é compatível com MySQL 8.0 (padrão), 5.7 e 5.6.

As atualizações de versão secundária são implantadas como parte da manutenção programada, sem que você precise fazer nada. Para mais informações sobre atualizações, consulte Visão geral da manutenção em instâncias do Cloud SQL.

Para saber a versão atual da instância, acesse o console do Google Cloud e clique no nome dela para abrir a página Detalhes da instância. Se preferir, use o comando gcloud sql instances describe.

O Cloud SQL aceita todos os recursos do banco de dados?
O Google Cloud SQL é compatível com os recursos mais comuns do MySQL. Para ver uma lista com todas as diferenças entre o MySQL padrão e a funcionalidade que o Cloud SQL oferece, consulte Diferenças entre as funcionalidades do Cloud SQL e do MySQL padrão.
Há limite de tamanho ou QPS?
Não há limite de consultas por segundo (QPS) para instâncias do Cloud SQL. Para informações sobre conexão, tamanho e limites específicos do App Engine, consulte Cotas e limites.
Como posso receber notificações quando houver alterações no Cloud SQL?
Inscreva-se no fórum google-cloud-sql-announce (em inglês), onde postamos anúncios e notícias sobre o Cloud SQL.
Como informo um bug, solicito um recurso ou faço uma pergunta?
Relate bugs e solicite recursos no grupo google-cloud-sql-discuss. Também é possível fazer perguntas no Stack Overflow (em inglês). Para outras opções de suporte, consulte a página Suporte do Cloud SQL.
Voltar ao início

Primeiros passos

Qual é a melhor ferramenta MySQL para gerenciar minha instância?
Há uma variedade de ferramentas MySQL disponíveis para o Cloud SQL. Para executar instruções individuais, use a ferramenta de linha de comando do MySQL. Para realizar tarefas mais complicadas ou usar um ambiente de desenvolvimento de banco de dados mais avançado, teste o Toad for MySQL ou o MySQL Workbench. Para mais informações, consulte Ferramentas de relatórios e administração.
Qual mecanismo de armazenamento devo usar?
Para instâncias do MySQL, o InnoDB é o único mecanismo de armazenamento compatível.

Se você tem um arquivo mysqldump com todas as tabelas no formato MyISAM, é possível convertê-las para o formato InnoDB encaminhando o arquivo por meio de um script sed:

mysqldump --databases [DATABASE_NAME] \
-h [INSTANCE_IP] -u [USERNAME] -p [PASSWORD] \
--hex-blob --default-character-set=utf8mb4 | sed 's/ENGINE=MyISAM/ENGINE=InnoDB/g' > [DATABASE_FILE].sql

Aviso: não faça isso se o arquivo mysqldump contiver o esquema mysql. Esses arquivos precisam permanecer em MyISAM.

Por que minha nova instância sem dados mostra espaço usado em disco?
O Cloud SQL e o banco de dados usam algum espaço para arquivos de sistema e metadados quando a instância é criada.
Voltar ao início

Armazenamento, replicação e autenticação de dados

Onde meus dados são armazenados?

Os dados da instância são armazenados na região em que a instância reside. Se um local de armazenamento não for especificado, os backups serão armazenados na multirregião geograficamente mais próxima do local da instância do Cloud SQL. Por exemplo, se a sua instância do Cloud SQL estiver em us-central1, seus backups serão armazenados na multirregião us por padrão. No entanto, um local padrão, como australia-southeast1, estará fora de uma multirregião. A multirregião mais próxima é asia.

O que é uma zona?

Uma zona é uma entidade independente em uma localização geográfica específica em que você pode executar seus recursos. Por exemplo, uma zona chamada us-central1-a indica um local no centro dos Estados Unidos.

No caso das instâncias do MySQL, a tolerância a falhas entre zonas pode ser alcançada com a configuração da instância para alta disponibilidade. A configuração de alta disponibilidade é bastante recomendada para todas as instâncias de produção.

Para mais informações sobre zonas, consulte Recursos da zona na documentação do Compute Engine.

Quais os limites de armazenamento?
Para informações sobre limites de armazenamento, consulte Cotas e limites.
Como meus dados são replicados?

Instâncias do MySQL: as instâncias do MySQL fornecem uma configuração de alta disponibilidade e réplicas de leitura do MySQL. As réplicas de leitura do MySQL usam replicação assíncrona.

Que tipo de réplicas de leitura posso criar?

Para mais informações sobre réplicas de leitura, inclusive casos de uso para cada tipo, consulte Opções de replicação.

Como funciona o failover do Cloud SQL?

Para mais informações sobre failover, consulte Visão geral da configuração de alta disponibilidade.

Meus dados são criptografados?
Os dados dos clientes do Cloud SQL são criptografados quando armazenados em tabelas de banco de dados, arquivos temporários e backups. É possível criptografar conexões externas usando SSL ou o proxy do Cloud SQL Auth.
Como a criptografia é gerenciada para dados em repouso?

Os dados são criptografados com o uso do padrão avançado de criptografia de 256 bits (AES-256, na sigla em inglês) ou superior, com chaves simétricas. Ou seja, a mesma chave é usada para criptografar os dados quando armazenados e para descriptografá-los quando usados. Essas chaves de dados também são criptografadas usando uma chave armazenada em um keystore seguro e alteradas regularmente.

Para mais detalhes, consulte Criptografia em repouso no Google Cloud.

Como a criptografia é gerenciada para dados em trânsito?

O Google criptografa e autentica todos os dados em trânsito em uma ou mais camadas de rede quando transferidos para outros limites físicos não controlados pelo Google ou em nome dele. Os dados em trânsito dentro de um limite físico controlado pelo Google ou em nome dele costumam ser autenticados, mas não necessariamente criptografados por padrão. Se você estiver se conectando a uma instância usando o endereço IP público dela, utilize os certificados SSL/TLS para proteger os dados durante a transmissão. Escolha quais medidas de segurança adicionais serão aplicadas com base no seu modelo de ameaça. Por exemplo, configure o SSL para conexões entre zonas ao Cloud SQL.

Para mais detalhes, consulte Criptografia em trânsito no Google Cloud.

Como posso saber se uma instância é uma réplica de leitura?
Use o console do Google Cloud para ver todas as instâncias do Cloud SQL e verificar qual instância é primária e qual é réplica de leitura. Também é possível usar a CLI gcloud para verificar se uma instância é primária ou se é uma réplica de leitura. Para mais informações, consulte Como verificar o status da replicação.
O Cloud SQL fornece balanceamento de carga para solicitações de réplicas de leitura?
O Cloud SQL não fornece nem configura automaticamente o balanceamento de carga. Use o pooling de conexões para distribuir solicitações de leitura entre réplicas de leitura alternando entre vários endpoints de conexão.
Voltar ao início

Backup e recuperação

Como recupero uma instância?

Para restaurar um backup, use o console do Google Cloud ou a ferramenta de gcloud linha de comando. Para mais detalhes, consulte Como restaurar uma instância.

Para restaurar uma instância em um momento específico, use uma recuperação pontual. Para mais informações, consulte Usar a recuperação pontual.

Quanto custam os backups?

Os backups são cobrados de acordo com a taxa de armazenamento da instância.

Para mais informações sobre os preços de armazenamento e as taxas da instância, consulte Preços.

Posso acessar backups automatizados com mais de sete dias?

Os backups automáticos ocorrem todos os dias e, por padrão, são mantidos por sete dias. É possível configurar o valor de retenção de backup de um para 365 backups. No final do período de armazenamento, o backup mais antigo é excluído. Os backups automatizados são incrementais. Eles contêm apenas dados que foram alterados após o backup anterior. O backup mais antigo tem tamanho semelhante ao do banco de dados. Ao excluir o backup mais antigo, o tamanho do segundo mais antigo aumenta para que você ainda tenha um backup completo.

Os backups sob demanda não serão excluídos até que você os remova manualmente.

Como a recuperação pontual afeta o desempenho?
No Cloud SQL para MySQL, a recuperação pontual exige que você ative a geração de registros binários. Isso significa que cada atualização no banco de dados é gravada em um registro independente, o que envolve uma pequena redução no desempenho de gravação. O desempenho das operações de leitura não é afetado pela geração de registros binários, independentemente do tamanho dos arquivos desses registros.
Quando uso a replicação externa e entre regiões para proteção regional contra falhas?
Replicação externa Replicação entre regiões
Autogerenciada pelo cliente Réplica entre regiões gerenciada pelo Cloud SQL
Pode replicar entre instâncias que não são do Google Cloud e do Google Cloud Pode replicar apenas entre instâncias do Cloud SQL
Migrar de/para o Google Cloud a fim de minimizar o tempo de inatividade ou proteger dados híbridos/em várias nuvens. Migrar dados entre regiões do Google Cloud para minimizar a inatividade
Compatível com replicação de versão principal Incompatível com replicação de versão principal
Voltar ao início

Gerenciamento das instâncias

Quais ações podem causar o reinício de instâncias do Cloud SQL?
As instâncias do Cloud SQL podem ser reiniciadas quando você ou o Cloud SQL realiza as seguintes ações:
  • Atualização
  • Criação
  • Promoção de réplica
  • Manutenção
  • Recriação de réplica
  • Failover
  • Reinicialização
  • Restauração da instância a partir do backup
  • Ativação da alta disponibilidade em uma instância atual (esta é uma atualização da instância)
  • Adição de uma sinalização de banco de dados que requer uma reinicialização

A reinicialização de uma instância não altera os endereços IP públicos ou privados da instância.

Consulte a seção a seguir: Por quanto tempo as instâncias são desligadas durante a reinicialização?

Por quanto tempo as instâncias são desligadas durante a reinicialização?

Quando as instâncias são reiniciadas, a maioria delas é desligada por um ou dois minutos. Antes do desligamento da instância, todas as conexões são eliminadas e o trabalho atual é apagado do disco.

Para instâncias com uma carga grande, esse processo leva mais tempo e pode parecer que a instância está paralisada. Nesses casos, pode levar até uma hora para que a instância seja desligada e reiniciada. Os motivos para as instâncias levarem muito tempo para serem encerradas e reiniciadas podem ser os seguintes: quando o usuário tem muitas transações de gravação ou quando elas são executadas por muito tempo.

Posso aumentar ou diminuir meu banco de dados?

Instâncias do MySQL: é possível aumentar a quantidade de armazenamento disponível para a instância a qualquer momento, sem provocar inatividade. Não é possível diminuir o tamanho do armazenamento da instância.

Você também pode configurar a instância para aumentar automaticamente a capacidade de armazenamento dela quando estiver sem espaço. Saiba mais

Posso fazer upgrade e downgrade de vCPUs?

Sim. É possível alterar o número de vCPUs usadas na instância. É possível aumentar ou diminuir o número de núcleos que você usa quantas vezes quiser. Normalmente, leva menos de cinco minutos de inatividade para alterar o número de vCPUs. Se você estiver aumentando o número de vCPUs na instância principal do Cloud SQL Enterprise Plus, a alteração entrará em vigor com inatividade quase zero.

Preciso usar o console do Google Cloud para gerenciar o Cloud SQL?
Não. Todas as tarefas de gerenciamento que podem ser realizadas usando o Console também podem ser realizadas de maneira programática, usando a API Cloud SQL Admin, ou com script, usando a ferramenta de linha de comando gcloud.
Como recuperar o espaço de uma tabela eliminada?
Ao eliminar uma tabela de um banco de dados e depois verificar o console do Google Cloud, você verá que o espaço liberado pela eliminação não se reflete no Armazenamento usado registrado da instância. Por padrão, as instâncias que executam o MySQL 5.5 têm a sinalização innodb_file_per_table definida como OFF. O InnoDB nunca reduz o tablespace padrão. Para recuperar espaço com essa configuração, crie uma nova instância com base no banco de dados menor ou mude o valor da sinalização innodb_file_per_table para ON. Para mais informações sobre como mudar as sinalizações do banco de dados, consulte Como configurar sinalizações do banco de dados.
Como recupero o espaço usado por arquivos temporários?
Os arquivos temporários podem aumentar quando as consultas SQL criam muitas tabelas temporárias. Para recuperar o espaço usado por tabelas temporárias, você precisa reiniciar o banco de dados. A reinicialização do banco de dados não reduz o espaço em disco provisionado resultante do crescimento de arquivos temporários.
Posso limpar manualmente registros binários de instâncias?
Os registros binários usam espaço de armazenamento. Eles são excluídos automaticamente com o backup automático associado, o que geralmente ocorre após sete dias. Não é possível excluir registros binários manualmente.

Se o tamanho dos registros binários causar um problema na instância, aumente o tamanho do armazenamento. Também é possível desativar e reativar a geração de registros binários, o que causa a exclusão deles. No entanto, isso não diminui o tamanho do armazenamento provisionado para a instância.

Posso configurar uma política de retenção de registros binários personalizada?
Os registros binários são excluídos automaticamente com o backup automático associado, o que geralmente acontece após cerca de sete dias. Não é possível mudar esse período.
Como posso rastrear as alterações feitas nos dados?
Para rastrear alterações nos dados, ative a geração de registros binários da instância. Esse rastreamento pode ajudar na recuperação de perdas acidentais de dados. Em caso de perda acidental de dados, por exemplo, com um comando DROP DATABASE, é possível restaurar até as coordenadas de registro binário imediatamente anteriores ao evento da perda de dados. Para mais informações, consulte recuperação pontual.
Posso importar ou exportar um banco de dados específico?
Sim. É possível importar ou exportar um banco de dados específico ou todos os bancos de dados em uma instância. Para mais informações, consulte Como importar dados ou Como exportar dados.
Posso importar ou exportar um arquivo CSV?
É possível importar ou exportar um arquivo CSV para MySQL ou PostgreSQL. Para mais informações, consulte Como criar um arquivo CSV.

No momento, o CSV não é compatível com o Cloud SQL para SQL Server.

Preciso de uma conta do Cloud Storage para importar ou exportar dados para uma instância?
O Cloud SQL é compatível com importação e exportação de bancos de dados (com arquivos dump SQL compactados ou não compactados) e arquivos CSV que usam um bucket do Cloud Storage. Para importar ou exportar usando um bucket do Cloud Storage, inscreva-se em uma conta do Google Cloud e crie um bucket ou consiga acesso a um bucket do Cloud Storage em outra conta. Para mais informações, consulte Como exportar e importar usando arquivos dump SQL ou Como exportar e importar usando arquivos CSV.
O que significa ERROR_RDBMS em uma operação de importação?
Isso ocorre se o MySQL retorna um erro durante uma operação de importação de dados. Entre as causas mais comuns estão: sintaxe inválida, uso de uma tabela ou banco de dados que não tenha sido definido e tentativa de execução de instruções do MySQL que exijam o privilégio SUPER.
Se eu excluir minha instância, posso reutilizar o nome dela?
Sim.
Quem é o usuário de banco de dados cloudsqladmin?
Cada instância do Cloud SQL inclui um usuário de banco de dados chamado cloudsqladmin. Talvez você perceba esse usuário ao especificar SHOW GRANTS FOR cloudsqladmin@localhost. Em algumas instâncias, ele também será exibido na tabela de usuários do sistema. Essa conta de usuário é usada por processos automatizados que precisam acessar os dados na instância. Por exemplo, para fazer o backup da instância ou realizar uma importação/exportação.
Como usar GRANT ALL?
O Cloud SQL não é compatível com privilégios SUPER, ou seja, as instruções GRANT ALL PRIVILEGES não funcionam. Como alternativa, use GRANT ALL ON `%`.*.
Como posso acessar os registros de transações das minhas instâncias?
Para instâncias do MySQL, se você ativar a geração de registros binários (consulte Como ativar a geração de registros binários) e configurar um endereço IP para a instância (consulte Como configurar o acesso para conexões IP), será possível usar o utilitário mysqlbinlog padrão do MySQL para verificar os registros de transações.
Que nível de isolamento de transação o Cloud SQL oferece?

Instâncias do MySQL: o Cloud SQL fornece o isolamento da transação REPEATABLE READ. É possível alterar o nível de isolamento da transação para a sessão atual, mas geralmente o valor padrão é o preferido. Para mais informações, consulte Níveis de isolamento da transação na documentação do MySQL.

Como posso proteger minha instância contra exclusão acidental?
É possível ativar a proteção contra exclusão ao criar uma instância ou depois. Se essa configuração estiver ativada, será necessário desativá-la antes de excluir a instância. Consulte Impedir a exclusão de uma instância.
Voltar ao início

Insights

Por que não consigo encontrar o plano de consulta de amostra no Insights?
Temos consultas de amostra apenas para conseguir o plano de consultas. Fazemos as coisas dessa forma por causa do impacto que o plano pode ter sobre a consulta. Como resultado, às vezes os planos de consultas de amostra não aparecem.
Voltar ao início

Preços e faturamento

Como posso testar o Cloud SQL?
A menor instância é a db-f1-micro. É possível usá-la para testar o serviço. Observe que o SLA não cobre as instâncias de núcleo compartilhado.
Quantas instâncias posso criar em um projeto?
Para informações sobre o limite de instâncias, consulte Cotas e limites..
Preciso de que tamanho de instância de banco de dados? De quanta memória RAM eu preciso?
Em geral, é possível melhorar o desempenho do banco de dados escolhendo uma instância maior com mais RAM e CPU. Isso melhora o desempenho de muitas consultas com uso intensivo de computação, como as que envolvem mesclagens, classificações ou agrupamentos, embora o desempenho das atualizações que influenciam linhas individuais não seja muito afetado. No entanto, quanto maior o tamanho da instância, maior a latência operacional. Para mais informações sobre tamanhos e preços de instâncias, consulte a página de preços.
Como o uso da minha instância é calculado?

Instâncias do MySQL: a cobrança será feita por minuto pelo tempo em que a instância estiver ativa. A política de ativação é ALWAYS.

Como o armazenamento é calculado?
O armazenamento é calculado com base no volume de armazenamento que você provisionou para sua instância. O armazenamento de backups é cobrado pelo espaço utilizado por eles. O armazenamento é cobrado com a instância ativa ou inativa.
Como posso saber o valor da cobrança?
Na guia Faturamento do console do Google Cloud, são mostradas as cobranças das instâncias desde a emissão da última fatura.
O que acontece quando minha instância atinge o tamanho permitido?
Se a instância atingir o tamanho de armazenamento provisionado e o aumento automático de armazenamento não estiver ativado ou se você tiver atingido o limite configurado, as futuras gravações no banco de dados serão desativadas até que você aumente o tamanho do armazenamento. Esse aumento não requer reinicialização da instância ou inatividade.
Por que minha instância foi suspensa?
Isso provavelmente ocorre devido a um problema na conta do Google Cloud. Envie à equipe de Suporte de faturamento uma solicitação para determinar o status de faturamento. Depois que o problema de faturamento for resolvido, a instância retornará ao status executável dentro de algumas horas. As instâncias suspensas do MySQL são excluídas após 90 dias.
Por que minha instância foi excluída?
As instâncias do MySQL suspensas por 90 dias são excluídas. Isso se aplica a instâncias com estado SUSPENDED. As instâncias interrompidas, com estado RUNNABLE, não são excluídas.
Como cancelar minha conta do Cloud SQL?
Se você quiser desativar o Cloud SQL em um projeto, acesse o console do Google Cloud e selecione o projeto e o serviço da API para abrir o Painel de APIs. Encontre a API Cloud SQL e clique em Desativar para essa API.
Como desativar o faturamento?
Para desativar o faturamento em um projeto, clique em Desativar faturamento no painel Faturamento e configurações do console do Google Cloud. Se desativar o faturamento, você também desativará o serviço Cloud SQL. Certifique-se de que realmente quer desativar o serviço Cloud SQL antes de desativar o faturamento.

Depois de desativar o faturamento, você receberá uma última fatura referente às cobranças realizadas entre o início do ciclo de faturamento e o momento do cancelamento.

Voltar ao início

Como usar o Cloud SQL com o App Engine

Posso me conectar a uma instância do MySQL pelo App Engine?
É possível se conectar de um aplicativo do App Engine a uma instância do MySQL com o aplicativo em execução em ambiente padrão ou flexível. Para mais informações, consulte Como se conectar pelo ambiente padrão do App Engine ou Como se conectar pelo ambiente flexível do App Engine.
O aplicativo do App Engine nos EUA pode acessar uma instância do Cloud SQL na Europa (e vice-versa)?

Se você estiver se conectando a uma instância do MySQL, o aplicativo do App Engine não precisa estar na mesma região e poderá ser executado em ambiente padrão ou flexível. No entanto, uma distância maior entre a instância do Cloud SQL e o aplicativo do App Engine causa latência maior em conexões com o banco de dados.

Qual serviço de banco de dados do Google Cloud é ideal para mim?
Depende dos requisitos do aplicativo. O Google Cloud oferece várias opções para armazenar, gerenciar e recuperar dados. Para mais informações, consulte Bancos de dados do Google Cloud.
Preciso instalar um servidor de banco de dados local para usar o servidor de desenvolvimento do App Engine?
Não. Configure o App Engine para usar o Cloud SQL ou um servidor de banco de dados instalado localmente durante a execução no servidor de desenvolvimento.
Que linguagens posso usar para acessar minha instância?
O ambiente padrão do App Engine é compatível com várias linguagens usadas para se conectar às instâncias. Para mais informações, consulte Como se conectar pelo ambiente padrão do App Engine ou Como se conectar pelo ambiente flexível do App Engine.

Caso não esteja usando o App Engine, é possível usar qualquer linguagem que tenha uma API ou um conector associado. Confira a lista de linguagens compatíveis no capítulo Conectores e APIs, no Manual de referência do MySQL.

Posso usar o Django com o Cloud SQL?
Sim. O Cloud SQL é compatível com o Django. Consulte Primeiros passos com o Django.
Quais marcadores posso usar na string de consulta do Python?
Os usuários do Python só podem usar o código de formato %s na substituição de parâmetro. Portanto, a seguinte instrução é inválida: cursor.execute('INSERT INTO entries (guestAge) VALUES (%d)', (age)).
Como faço para gerenciar as conexões?

Gerenciar suas conexões de banco de dados com eficiência é um aspecto importante do desenvolvimento de aplicativos de banco de dados, incluindo o uso de pool de conexões e a espera exponencial. Para exemplos de como empregar essas técnicas em várias linguagens e estruturas, consulte Como gerenciar conexões com o banco de dados.

Para saber mais sobre limites de conexão de instâncias, consulte Cotas e limites.

O que significa SQLException com a mensagem "ID de conexão inválido"?
Isso significa que a conexão não está mais aberta no servidor e foi descartada pelo cliente.  Você não precisa chamar o fechamento ("close") nessas conexões. Elas já estão fechadas.
Posso acessar minha instância do Cloud SQL de maneira programática fora do App Engine?
Sim. É possível acessar instâncias do Cloud SQL de maneira programática em aplicativos externos usando qualquer linguagem compatível. Também é possível se conectar usando o conector Java do Cloud SQL, incluindo a gravação de scripts do Apps Script para acessar os bancos de dados do Cloud SQL. Consulte Visão geral da conexão.
Voltar ao início