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

Ao importar e exportar dados para o AlloyDB para PostgreSQL, considere as seguintes práticas recomendadas:

  • Não use buckets do Cloud Storage Pagamentos do solicitante para importações ou exportações.
  • Use as flags corretas ao criar um arquivo dump SQL.
  • Compacte dados para reduzir custos.
  • Reduza processos de importação e exportação de longa duração processando dados em lotes.
  • Verifique o banco de dados importado após a importação.

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

Não é possível usar um bucket do Cloud Storage com os pagamentos do solicitante ativados para importações ou exportações do AlloyDB. O AlloyDB usa uma conta serviço gerenciado pelo Google, o agente de serviço, para realizar importações e exportações. Em geral, esse agente não tem o contexto ou a configuração para cobrar do projeto do solicitante o acesso aos dados, o que causa falhas nas operações que envolvem buckets do Requester Pays.

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

Se você não usar as flags e opções corretas ao exportar dados para um arquivo dump SQL, a importação poderá falhar. Para informações sobre exportar dados para importar para o AlloyDB, consulte Exportar um arquivo DMP e Exportar um arquivo SQL.

Compactar dados para reduzir custos

O AlloyDB permite importar e exportar arquivos .gz compactados do Cloud Storage. 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 quantidades de dados. Ao exportar um arquivo CSV ou dump SQL usando a API AlloyDB, use uma extensão de arquivo .gz no URI de destino para compactar os dados. Quando você importa um arquivo com uma extensão .gz, ele é descompactado automaticamente.

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

Dependendo do tamanho dos dados, as importações e exportações do AlloyDB podem levar muito tempo para serem concluídas. Se uma operação demorar muito, ela poderá bloquear outras operações.

Reduza o tempo para concluir cada operação usando lotes menores de dados. Você também pode usar a ferramenta pg_dump para fazer uma exportação manual de um cliente conectado a uma instância de pool de leitura.

Verificar o banco de dados importado

Depois que uma operação de importação for concluída, conecte-se ao banco de dados usando psql ou outro cliente e execute os comandos apropriados para garantir que o conteúdo esteja correto, como listar tabelas ou consultar contagens de linhas.

Automatizar operações de exportação

Embora o AlloyDB não ofereça um método integrado para automatizar exportações, é possível criar uma ferramenta de automação usando outros componentes doGoogle Cloud , como Cloud Scheduler, Pub/Sub e funções do Cloud Run.

Solução de problemas

Nesta seção, você encontra sugestões de correções para problemas que podem ocorrer com operações de importação e exportação.

Operações de importação

Problema Descrição Correção recomendada
ERROR: permission denied for schema public Para o PostgreSQL 15 e versões mais recentes, a importação de dados pode falhar devido a permissões de esquema se você criar o banco de dados de destino com base no template0.

Para resolver isso, use o comando a seguir para conceder privilégios no esquema public ao usuário que está importando dados:

        GRANT ALL ON SCHEMA public TO my_import_user;
        
A operação de importação está demorando muito. Muitas conexões ativas podem interferir nas operações de importação.

Tente o seguinte:

  • Feche as conexões não usadas.
  • Para garantir que haja recursos suficientes disponíveis, verifique o uso de CPU e memória da instância.
  • Para garantir o máximo de recursos para a importação, reinicie a instância antes de iniciar a operação. Isso fecha todas as conexões e encerra tarefas que podem consumir recursos.
Uma operação de importação falha porque 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 necessários antes de importar.
GRANT stderr: ERROR: must be member of role ROLE_NAME Esse erro pode ocorrer se você importar um arquivo dump SQL que contenha objetos pertencentes a ROLE_NAME ou permissões concedidas a ROLE_NAME, mas o usuário do banco de dados que realiza a importação não for membro de ROLE_NAME. Para resolver isso, verifique se a função ROLE_NAME existe no banco de dados de destino e conceda a associação a ROLE_NAME ao usuário que está fazendo a importação antes de executar a importação.

Operações de exportação

Problema Descrição Correção recomendada
HTTP Error 403: The service account does not have the required permissions for the bucket. A conta de serviço do AlloyDB não tem as permissões necessárias para o bucket de destino. Verifique se o bucket de destino do Cloud Storage existe e se a conta de serviço do AlloyDB tem os papéis roles/storage.objectAdmin ou roles/storage.objectCreator concedidos. Esses papéis permitem que ele grave no bucket. Consulte Papéis do Identity and Access Management (IAM) para o Cloud Storage.
A exportação de CSV funcionou, mas a de SQL falhou. Os formatos CSV e SQL são exportados de maneira diferente. O formato SQL exporta o esquema e os dados do banco de dados e geralmente leva mais tempo. O formato CSV exporta apenas os dados resultantes de uma consulta SELECT que você fornece. Se uma exportação SQL falhar ou for muito lenta, exporte tabelas individuais usando CSV.
A exportação está demorando muito. Se uma exportação demorar muito na sua instância principal, talvez ela seja muito grande. Considere exportar dados em lotes menores. Por exemplo, exporte tabelas individualmente em vez de exportar um banco de dados inteiro em uma operação. Você também pode usar a ferramenta pg_dump para fazer uma exportação manual de um cliente conectado a uma instância de pool de leitura.
Erro Create Extension no registro pg_restore ou falha na importação. O arquivo dump contém referências a uma extensão do PostgreSQL que o AlloyDB não aceita ou que não está instalada no cluster. Para remover as referências, edite o arquivo dump ou instale a extensão no cluster se o AlloyDB for compatível com ela.
Erro ao usar pg_dumpall. O utilitário pg_dumpall com flags como --globals-only pode exigir privilégios indisponíveis no AlloyDB.

Para exportar objetos globais, como usuários e papéis, sem senhas, use o seguinte comando para incluir a flag --no-role-passwords:

        pg_dumpall --globals-only --no-role-passwords
        
A operação de exportação expira ou você vê Connection reset by peer. Se o Cloud Storage não receber dados em um determinado período, a conexão poderá ser redefinida. Isso pode acontecer se as consultas iniciais do banco de dados necessárias para a exportação demorarem muito para serem executadas. Se isso acontecer, tente fazer uma exportação manual usando a ferramenta pg_dump de um cliente conectado a uma instância de pool de leitura.

Problemas comuns

Problema Descrição Correção recomendada
HTTP Error 409: Operation failed because another operation was already in progress. O sistema permite apenas uma operação de importação ou exportação baseada em API por vez. Tente fazer o pedido após a conclusão da operação atual.

A seguir