Perguntas frequentes sobre o Cloud SQL

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?

No caso do Cloud SQL para MySQL, as instâncias da segunda geração são compatíveis com MySQL 8.0, 5.7 (padrão) e 5.6. As instâncias de primeira geração aceitam MySQL 5.6. O Cloud SQL para PostgreSQL é compatível com o PostgreSQL 9.6, 10, 11, 12 (padrão) e 13. O Cloud SQL para SQL Server é compatível com o SQL Server 2017 Standard (padrão), o SQL Server 2017 Enterprise, o SQL Server 2017 Express e o SQL Server 2017 Web. As atualizações de versão secundárias são implantadas logo após o lançamento, 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 é compatível com todos os recursos de banco de dados?
O Cloud SQL é compatível com os recursos mais comuns do MySQL ou do PostgreSQL. Para ver uma lista de todas as diferenças entre a funcionalidade de banco de dados padrão e o que o Cloud SQL oferece, consulte Diferenças entre o Cloud SQL e a funcionalidade padrão do MySQL e Diferenças entre o Cloud SQL e a funcionalidade padrão do PostgreSQL. Consulte também Recursos do SQL Server indisponíveis para o Cloud SQL.
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 mudanças 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 relatar um bug, solicitar um recurso ou fazer uma pergunta?
Relate bugs e solicite recursos no grupo google-cloud-sql-discuss (em inglês). 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 e replicação de dados

Onde meus dados são armazenados?

Instâncias do MySQL: os dados da instância são armazenados na região em que a instância reside. Por padrão, o Cloud SQL armazena dados de backup em duas regiões para redundância. Uma região pode ser a mesma em que a instância está. A outra é uma região diferente. Se houver duas regiões em um continente, os dados de backup permanecerão no mesmo continente. Como há apenas uma região na Austrália, os dados de backup da região de Sydney são armazenados na Ásia. Para a região de São Paulo, os dados de backup são armazenados em um local nos EUA.

Instâncias do PostgreSQL: os dados da instância são armazenados na região em que a instância reside. Por padrão, o Cloud SQL armazena dados de backup em duas regiões para redundância. Uma região pode ser a mesma em que a instância está. A outra é uma região diferente. Se houver duas regiões em um continente, os dados de backup permanecerão no mesmo continente. Como há apenas uma região na Austrália, os dados de backup da região de Sydney são armazenados na Ásia. Para a região de São Paulo, os dados de backup são armazenados em uma região baseada nos EUA.

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 por zona na documentação do Compute Engine.

Quais os limites de armazenamento?
Para informações sobre os 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.

As instâncias do PostgreSQL oferecem uma configuração de alta disponibilidade e réplicas de leitura.

Como funciona o failover do Cloud SQL?

Para 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 Cloud SQL Proxy.
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. Escolha quais medidas de segurança adicionais se aplicam com base no modelo de ameaça. Por exemplo, configure SSL para conexões entre zonas com o Cloud SQL.

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

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 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 o SDK do Cloud 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 do MySQL para um ponto específico, use uma recuperação pontual. Para mais informações, consulte Como realizar uma 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 automatizados ocorrem diariamente e são mantidos por sete dias. No final de sete dias, 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. Quando o backup mais antigo é excluído, o tamanho do próximo backup mais antigo aumenta para que um backup completo ainda exista.

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

Como a recuperação pontual afeta o desempenho?
A recuperação pontual requer que você ative a geração de registros binários. Isso significa que cada atualização em seu 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.
Voltar ao início

Como gerenciar 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
Consulte Por quanto tempo as instâncias ficam desligadas durante a reinicialização?.
Por quanto tempo as instâncias ficam 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.

Posso aumentar ou diminuir meu banco de dados?

Instâncias do MySQL e PostgreSQL: é 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.

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.
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. A recuperação pontual e os registros binários ainda não estão disponíveis para instâncias do PostgreSQL.
Posso importar ou exportar um banco de dados específico?
Sim. Para instâncias do MySQL, é possível importar e exportar um único banco de dados ou vários. Para instâncias do PostgreSQL, você só pode importar ou exportar um banco de dados específico.
Posso importar ou exportar um arquivo CSV?
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 importar dados ou Como exportar dados.
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, poderei reutilizar o nome dela?
Sim, mas não imediatamente. O nome da instância fica indisponível por até uma semana antes de poder ser reutilizado.
Quem é o usuário de banco de dados cloudsqladmin?
Cada instância do Cloud SQL inclui um usuário de banco de dados denominado cloudsqladmin. Talvez você perceba esse usuário ao executar 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.

Instâncias do PostgreSQL: o Cloud SQL oferece isolamento da transação Read committed. É possível alterar o nível de isolamento de uma transação específica, mas, em geral, o valor padrão é preferível. Para mais informações, consulte Isolamento da transação (em inglês) na documentação do PostgreSQL.

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. 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 e do PostgreSQL: a cobrança é feita por minuto enquanto a instância está ativa.

Como o armazenamento é calculado?

Instâncias do MySQL e do PostgreSQL: o armazenamento é calculado com base no volume de armazenamento que você provisionou para sua instância. O armazenamento para backups é cobrado de acordo com quanto espaço eles usam. O armazenamento é cobrado com a instância ativada ou desativada.

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?

Instâncias do MySQL e PostgreSQL: se a instância atingir o tamanho de armazenamento provisionado e você não tiver ativado o aumento automático de armazenamento ou se ela atingir o limite configurado, não serão permitidas gravações futuras no banco de dados 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 uma solicitação à equipe de suporte de faturamento 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?
Instâncias do PostgreSQL e 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 posso 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.
Posso me conectar a uma instância do PostgreSQL pelo App Engine?
É possível se conectar a uma instância do PostgreSQL por um aplicativo do App Engine dependendo do ambiente e da linguagem que estiver usando. 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 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.

Seu aplicativo do App Engine não precisa estar na mesma região para que você se conecte a uma instância do PostgreSQL. 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ários serviços para armazenar e recuperar dados. Para mais informações, consulte Opções de armazenamento.
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 App Engine aceita 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. Consulte Como conectar-se de aplicativos externos.
Voltar ao início