Práticas recomendadas para importação e exportação de dados

Esta página informa as práticas recomendadas para importar e exportar dados com o Cloud SQL. Para instruções detalhadas sobre como importar dados para o Cloud SQL, consulte Importar dados. Para instruções passo a passo sobre como exportar seus dados, seja no Cloud SQL ou em uma instância que você gerencia, consulte Exportar dados.

Práticas recomendadas para importação e exportação

Veja a seguir as práticas recomendadas a serem consideradas ao importar e exportar dados:

Não use os buckets dos pagamentos do solicitante do Cloud Storage

Não é possível usar um bucket do Cloud Storage que tem a opção Pagamentos do solicitante ativada para operações de importação e exportação do Cloud SQL.

Minimizar o impacto do desempenho das exportações

Para uma exportação padrão do Cloud SQL, o processo é executado enquanto o banco de dados está on-line. Quando os dados que estão sendo exportados são menores, é provável que o impacto seja mínimo. No entanto, quando há bancos de dados grandes ou objetos maiores, como BLOBs, é possível que a exportação prejudique o desempenho do banco de dados. Isso pode afetar o tempo necessário para fazer consultas e operações no banco de dados. Depois de iniciar uma exportação, não será possível parar se o banco de dados começar a responder lentamente.

Para evitar respostas lentas durante uma exportação, é possível fazer o seguinte:

  1. Faça a exportação de uma réplica de leitura. Essa pode ser uma boa opção se você exportar com frequência (diariamente ou com mais frequência), mas a quantidade de dados que está sendo exportada é pequena. Para exportar uma réplica de leitura, use o Console do Google Cloud, o gcloud ou as funções de exportação da API REST na instância da réplica de leitura. Consulte Criar réplicas de leitura para mais informações sobre como criar e gerenciar réplicas de leitura.

  2. Use a exportação sem servidor. Esse tipo de exportação permite que o Cloud SQL crie uma instância temporária separada para descarregar a operação de exportação. O descarregamento da operação de exportação permite que os bancos de dados na instância principal continuem a exibir consultas e realizar operações com a taxa de desempenho normal. Quando a exportação de dados é concluída, a instância temporária é excluída automaticamente. Essa é uma boa opção se você estiver fazendo uma exportação única de um banco de dados grande. Use as funções de exportação da AÌ REST, o Console do Google Cloud, o gcloud com a sinalização offload, para executar uma operação de exportação sem servidor.

    Durante uma operação de exportação sem servidor, é possível executar algumas outras operações, como edição, importação e failover da instância. No entanto, se você selecionar delete, a operação de exportação será interrompida algum tempo depois da exclusão da instância e não exportará dados.

    Consulte a tabela a seguir para saber mais sobre as operações que podem ser bloqueadas durante a execução de uma operação de exportação sem servidor:
    Operação atual Nova operação Bloqueada?
    Qualquer operação Exportação sem servidor Sim
    Exportação sem servidor Qualquer operação, exceto exportação sem servidor Não
    Qualquer operação, exceto exportação sem servidor Qualquer operação, exceto exportação sem servidor Sim

    Uma exportação sem servidor demora mais do que a padrão, porque leva tempo para criar a instância temporária. Esse processo pode levar mais de cinco minutos, no mínimo. No entanto, bancos de dados maiores podem precisar de mais tempo. Considere o impacto no tempo, desempenho e custo antes de determinar o tipo de exportação a ser usado.

Use as sinalizações corretas ao criar um arquivo dump SQL

Se você não usar o procedimento correto ao exportar dados para um arquivo dump SQL, poderá ocorrer uma falha na importação. Para informações sobre como criar um arquivo dump SQL para importar para o Cloud SQL, consulte Como exportar dados.

Compactar dados para reduzir custos

O Cloud SQL permite a importação e exportação de arquivos compactados e não compactados. A compactação pode economizar um espaço de armazenamento significativo no Cloud Storage e reduzir os custos com armazenamento, principalmente durante a exportação de grandes instâncias.

Ao exportar um arquivo CSV ou dump SQL, use uma extensão de arquivo .gz para compactar os dados. Quando você importa um arquivo com uma extensão de .gz, ele é descompactado automaticamente.

Reduzir processos de importação e exportação de longa duração

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.

Para mais dicas, confira Como diagnosticar problemas nas instâncias do Cloud SQL.

Verificar o banco de dados importado

Após a conclusão de uma operação de importação, conecte-se ao seu banco de dados e execute os comandos apropriados para garantir que o conteúdo esteja correto. Por exemplo, conecte-se e liste os bancos de dados, tabelas e entradas específicas.

Limitações conhecidas

Para ver uma lista de limitações conhecidas, consulte Problemas com importação e exportação de dados.

Como automatizar operações de exportação

Embora o Cloud SQL não forneça uma maneira integrada de automatizar exportações de banco de dados, é possível criar sua própria ferramenta de automação usando vários componentes do Google Cloud. Para saber mais, consulte este tutorial.

Solução de problemas

Como solucionar problemas com as operações de importação

Problema Solução de problemas
Mensagem de erro: permission denied for schema public Para o PostgreSQL versões 15 e posteriores, se o banco de dados de destino for criado com base no template0, talvez a importação de dados falhe. Para resolver esse problema, forneça privilégios de esquema públicos ao usuário cloudsqlsuperuser executando o comando SQL GRANT ALL ON SCHEMA public TO cloudsqlsuperuser.
HTTP Error 409: Operation failed because another operation was already in progress Já existe uma operação pendente para sua instância. Só é permitida uma operação por vez. Tente fazer o pedido após a conclusão da operação atual.
A operação de importação está demorando muito. Muitas conexões ativas podem interferir nas operações de importação.

Feche operações não usadas. Verifique o uso de CPU e da memória da instância do Cloud SQL para garantir que haja muitos recursos disponíveis. A melhor maneira de garantir o máximo de recursos para a importação é reiniciar a instância antes de começar a operação.

Uma reinicialização:

  • fecha todas as conexões;
  • encerra todas as tarefas que possam estar consumindo recursos.
Uma operação de importação pode falhar quando um ou mais usuários referenciados no arquivo dump não existem. Antes de importar um arquivo dump, todos os usuários do banco de dados que têm objetos ou receberam permissões nos objetos no banco de dados despejado precisam existir no banco de dados de destino. Caso contrário, a operação de importação não recriará os objetos com a propriedade ou as permissões originais.

Crie os usuários do banco de dados antes de importar.

Após a importação de dados, o tamanho do uso do disco de dados é muito maior.

Talvez haja um uso inesperado do disco após a importação de dados. Esse uso pode ser por causa da recuperação pontual.

Para resolver isso, depois de importar dados, desative a recuperação pontual se quiser excluir registros e recuperar armazenamento. Lembre-se de que diminuir o armazenamento usado não reduz o tamanho do armazenamento provisionado para a instância.

Mensagem de erro: GRANT stderr: ERROR: must be member of role ROLE_NAME

Essa mensagem de erro será exibida se você tentar importar um arquivo dump SQL enviado no Cloud Storage para um banco de dados do Cloud SQL e o job de importação tiver sido executado por cerca de quatro dias.

ROLE_NAME é um papel de banco de dados personalizado definido no banco de dados PostgreSQL de origem. O usuário cloudsqlsuperuser padrão importa o arquivo dump SQL. No entanto, esse usuário pode não pertencer ao papel ROLE_NAME.

Para resolver esse problema, siga estas etapas:

  1. Crie o papel ROLE_NAME no banco de dados de destino para onde você está importando o arquivo dump SQL.
  2. Não use o usuário cloudsqlsuperuser para importar o arquivo. Em vez disso, no banco de dados de destino, especifique um usuário que seja membro do papel ROLE_NAME. Para especificar o usuário, execute o seguinte comando:

    gcloud sql import sql INSTANCE URI [--async]
    [--database=DATABASE, -d DATABASE] [--user=USER] [GCLOUD_WIDE_FLAG …]

Como solucionar problemas com as operações de exportação

Problema Solução de problemas
HTTP Error 409: Operation failed because another operation was already in progress. Já existe uma operação pendente para sua instância. Só é permitida uma operação por vez. Tente fazer o pedido após a conclusão da operação atual.
HTTP Error 403: The service account does not have the required permissions for the bucket. Verifique se o bucket existe e se a conta de serviço da instância do Cloud SQL (que está fazendo a exportação) tem o papel Storage Object Creator (roles/storage.objectCreator) para permitir a exportação para o bucket. Consulte Papéis do IAM para o Cloud Storage.
A exportação de CSV funcionou, mas a exportação de SQL falhou. Os formatos CSV e SQL são exportados de maneira diferente. O formato SQL exporta todo o banco de dados e provavelmente leva mais tempo para ser concluído. O formato CSV permite definir quais elementos do banco de dados serão incluídos na exportação.

Use exportações de CSV para exportar apenas o que você precisa.

A exportação está demorando muito. O Cloud SQL não é compatível com operações síncronas simultâneas.

Use o descarregamento de exportação. Em um alto nível, no descarregamento de exportação, em vez de emitir uma exportação na instância de origem, o Cloud SQL ativa uma instância de descarregamento para realizar a exportação. O descarregamento de exportação tem várias vantagens, incluindo o aumento do desempenho na instância de origem e o desbloqueio de operações administrativas enquanto a exportação está em execução. Com o descarregamento de exportação, a latência total pode aumentar pelo tempo necessário para exibir a instância de descarregamento. Geralmente, para exportações de tamanho razoável, a latência não é significativa. No entanto, se a exportação for pequena o suficiente, será possível notar um aumento na latência.

Erro ao criar extensão. O arquivo dump contém referências a extensões não compatíveis.

Edite o arquivo dump para remover as referências.

Erro ao usar pg_dumpall. O uso do utilitário pg_dumpall com a sinalização --global exige o papel de superusuário, mas esse papel não é compatível com o Cloud SQL para PostgreSQL. Para evitar erros ao realizar operações de exportação que incluam nomes de usuários, use também a sinalização --no-role-passwords.
A operação de exportação expira antes de exportar qualquer coisa, e você vê a mensagem de erro Could not receive data from client: Connection reset by peer. Se o Cloud Storage não receber dados em um determinado período, geralmente em torno de sete minutos, a conexão será redefinida. É possível que a consulta de exportação inicial esteja demorando muito para ser executada.

Faça uma exportação manual usando a ferramenta pg_dump.

Você quer que as exportações sejam automatizadas. O Cloud SQL não oferece uma maneira de automatizar exportações.

É possível criar seu próprio sistema de exportação automatizada usando produtos do Google Cloud, como Cloud Scheduler, Pub/Sub e Cloud Functions, semelhante a este artigo sobre como automatizar backups.

A seguir