Melhores práticas para importação e exportação de dados

Esta página fornece práticas recomendadas para importar e exportar dados com o Cloud SQL. Para obter instruções passo a passo sobre como importar dados para o Cloud SQL, consulte Importando Dados . Para obter instruções passo a passo sobre como exportar seus dados, estejam eles no Cloud SQL ou em uma instância que você gerencia, consulte Exportando Dados .

Melhores práticas para importação e exportação

A seguir estão algumas práticas recomendadas a serem consideradas ao importar e exportar dados:

Não use os buckets do Cloud Storage Requester Pays

Não é possível usar um bucket do Cloud Storage que tenha o Requester Pays habilitado para importações e exportações do Cloud SQL.

Minimize o impacto do desempenho das exportações

Para uma exportação padrão do Cloud SQL, a exportação é executada enquanto o banco de dados está online. Quando os dados exportados são menores, o impacto provavelmente é mínimo. No entanto, quando há bancos de dados grandes ou objetos grandes, como BLOBs, no banco de dados, existe a possibilidade de a exportação prejudicar o desempenho do banco de dados. Isso pode afetar o tempo necessário para executar consultas e operações no banco de dados. Após iniciar uma exportação, não será possível interrompê-la se o banco de dados começar a responder lentamente.

Para evitar respostas lentas durante uma exportação, você pode:

  1. Exporte a partir de uma réplica de leitura. Esta pode ser uma boa opção se você exporta com frequência (diariamente ou com mais frequência), mas a quantidade de dados exportados é pequena. Para exportar a partir de uma réplica de leitura, use o comando Google Cloud Funções de exportação de console, gcloud ou API REST na sua instância de réplica de leitura. Consulte Criar réplicas de leitura para obter mais informações sobre como criar e gerenciar réplicas de leitura.

  2. Use a exportação sem servidor. Com a exportação sem servidor, o Cloud SQL cria uma instância temporária separada para descarregar a operação de exportação. Descarregar a operação de exportação permite que os bancos de dados na instância primária continuem a atender consultas e executar operações na taxa de desempenho normal. Quando a exportação de dados for concluída, a instância temporária será excluída automaticamente. Esta pode ser uma boa opção se você estiver exportando um banco de dados grande apenas uma vez. Use o Google Cloud Funções de exportação de console, gcloud ou REST API, com o sinalizador offload , para executar uma operação de exportação sem servidor.

    Durante uma operação de exportação sem servidor, você pode executar outras operações, como edição de instância, importação e failover. No entanto, se você selecionar delete , a operação de exportação será interrompida algum tempo após a exclusão da instância e não exportará nenhum dado.

    Consulte a tabela a seguir para saber mais sobre as operações que podem ser bloqueadas enquanto uma operação de exportação sem servidor estiver em execução:
    Operação atual Nova operação Bloqueado?
    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 leva mais tempo do que uma exportação padrão, pois leva tempo para criar a instância temporária. No mínimo, leva mais de cinco minutos, mas para bancos de dados maiores, pode levar mais tempo. Considere o impacto no tempo, no desempenho e no custo antes de determinar qual tipo de exportação usar.

Use os sinalizadores corretos ao criar um arquivo de despejo SQL

Se você não usar o procedimento correto ao exportar dados para um arquivo de despejo SQL, a importação poderá não ser bem-sucedida. Para obter informações sobre como criar um arquivo de despejo SQL para importação para o Cloud SQL, consulte Exportação de dados .

Compactar dados para reduzir custos

O Cloud SQL oferece suporte à importação e exportação de arquivos compactados e descompactados. A compactação pode economizar espaço de armazenamento significativo no Cloud Storage e reduzir seus custos de armazenamento, especialmente ao exportar instâncias grandes.

Ao exportar um dump SQL ou um arquivo CSV, use a extensão .gz para compactar os dados. Ao importar um arquivo com a extensão .gz , ele será descompactado automaticamente.

Reduza os processos de importação e exportação demorados

Importações para o Cloud SQL e exportações a partir do Cloud SQL podem levar muito tempo para serem concluídas, dependendo do tamanho dos dados processados. Isso pode ter os seguintes impactos:

  • Não é possível interromper uma operação de instância de longa execução do Cloud SQL.
  • Você pode 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 bloqueia outras operações, como backups diários automatizados. Exportações sem servidor permitem que você execute outras operações, incluindo edição de instâncias, importação, failover e desbloqueio de backups diários automatizados.

Você 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 menores de dados.

Para exportações, você pode executar a exportação 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 estiver em execução.

Para obter mais dicas, consulte Diagnosticando problemas com instâncias do Cloud SQL .

Verifique o banco de dados importado

Após a conclusão da 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 e liste os bancos de dados, tabelas e entradas específicas.

Limitações conhecidas

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

Automatizando operações de exportação

Embora o Cloud SQL não forneça uma maneira integrada de automatizar exportações de banco de dados, você pode criar sua própria ferramenta de automação usando vários Google Cloudcomponentes. Para saber mais, consulte este tutorial .

Solução de problemas

Solução de problemas de operações de importação

Emitir Solução de problemas
Mensagem de erro: permission denied for schema public Para as versões 15 e posteriores do PostgreSQL, se o banco de dados de destino for criado a partir do template0 , a importação de dados poderá falhar. Para resolver esse problema, conceda privilégios de esquema público 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. Apenas uma operação é permitida por vez. Tente sua solicitação 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 as operações não utilizadas. Verifique o uso de CPU e memória da sua instância do Cloud SQL para garantir que haja recursos suficientes disponíveis. A melhor maneira de garantir o máximo de recursos para a importação é reiniciar a instância antes de iniciar a operação.

Um reinício:

  • Fecha todas as conexões.
  • Encerra quaisquer tarefas que possam estar consumindo recursos.
Uma operação de importação pode falhar quando um ou mais usuários referenciados no arquivo de despejo não existem. Antes de importar um arquivo de despejo, todos os usuários do banco de dados que possuem objetos ou receberam permissões sobre objetos no banco de dados de despejo devem existir no banco de dados de destino. Caso contrário, a operação de importação não conseguirá recriar os objetos com a propriedade ou as permissões originais.

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

Após importar os dados, o tamanho do uso do disco de dados é muito maior.

Pode haver um uso inesperado do disco após a importação de dados. Esse uso pode ser devido ao uso da recuperação pontual .

Para resolver isso, após importar os dados, desative a recuperação pontual se desejar excluir logs e recuperar o 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 aparece se você tentar importar um arquivo de despejo SQL carregado no Cloud Storage para um banco de dados Cloud SQL e o trabalho de importação tiver sido executado por cerca de quatro dias.

ROLE_NAME é uma função de banco de dados personalizada definida no banco de dados PostgreSQL de origem. O usuário padrão cloudsqlsuperuser importa o arquivo de despejo SQL. No entanto, esse usuário pode não pertencer à função ROLE_NAME .

Para resolver esse problema, siga estas etapas:

  1. Crie a função ROLE_NAME no banco de dados de destino para onde você está importando o arquivo de despejo 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 da função 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 …]

Solução de problemas em operações de exportação

Emitir 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. Apenas uma operação é permitida por vez. Tente sua solicitação 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á realizando a exportação) tem a função Storage Object Creator ( roles/storage.objectCreator ) para permitir a exportação para o bucket. Consulte Funções do IAM para o Cloud Storage .
A exportação CSV funcionou, mas a exportação SQL falhou. Os formatos CSV e SQL exportam de forma diferente. O formato SQL exporta o banco de dados inteiro 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 CSV para exportar apenas o que você precisa.

A exportação está demorando muito. O Cloud SQL não oferece suporte a operações síncronas simultâneas.

Use o descarregamento de exportação . Em um nível mais alto, no descarregamento de exportação, em vez de emitir uma exportação na instância de origem, o Cloud SQL inicia uma instância de descarregamento para executar a exportação. O descarregamento de exportação tem várias vantagens, incluindo maior 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 de acordo com o tempo necessário para ativar a instância de descarregamento. Geralmente, para exportações de tamanho razoável, a latência não é significativa. No entanto, se a sua exportação for pequena o suficiente, você poderá notar um aumento na latência.

Erro ao criar extensão. O arquivo de despejo contém referências a uma extensão não suportada.

Edite o arquivo de despejo para remover as referências .

Erro ao usar pg_dumpall . O uso do utilitário pg_dumpall com o sinalizador --global requer a função de superusuário, mas essa função não é compatível com o Cloud SQL para PostgreSQL. Para evitar erros ao executar operações de exportação que incluem nomes de usuário, use também o sinalizador --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 dentro de um determinado período, normalmente 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 fornece uma maneira de automatizar exportações.

Você pode construir seu próprio sistema de exportação automatizado usando Google Cloudprodutos como Cloud Scheduler, Pub/Sub e funções do Cloud Run, semelhantes a este artigo sobre automação de backups .

O que vem a seguir