Práticas recomendadas para importar e exportar dados

Quando importa e exporta dados para o AlloyDB para PostgreSQL, considere as seguintes práticas recomendadas:

  • Não use contentores do Cloud Storage Requester Pays para importações ou exportações.
  • Use as flags corretas quando criar um ficheiro de despejo SQL.
  • Comprima os dados para reduzir os custos.
  • Reduza os processos de importação e exportação de longa duração processando os dados em lotes.
  • Valide a base de dados importada após a importação.

Não use contentores do Cloud Storage Requester Pays

Não pode usar um contentor do Cloud Storage com a funcionalidade Requester Pays ativada para importações ou exportações do AlloyDB. O AlloyDB usa uma conta de serviço gerida pela Google, o agente de serviço, para fazer importações e exportações. Geralmente, este agente não tem o contexto nem a configuração para cobrar ao projeto do requerente o acesso aos dados, o que faz com que as operações que envolvem contentores de Requester Pays falhem.

Use as flags corretas quando criar um ficheiro de captura SQL

Se não usar as opções e as flags corretas quando exporta dados para um ficheiro de despejo SQL, a importação pode não ser bem-sucedida. Para obter informações sobre a exportação de dados para importação no AlloyDB, consulte os artigos Exporte um ficheiro DMP e Exporte um ficheiro SQL.

Comprima os dados para reduzir os custos

O AlloyDB suporta a importação e a exportação de ficheiros .gz comprimidos do Cloud Storage. A compressão pode poupar um espaço de armazenamento significativo no Cloud Storage e reduzir os custos de armazenamento, especialmente quando exporta grandes quantidades de dados. Quando exporta um despejo SQL ou um ficheiro CSV através da API AlloyDB, use uma extensão de ficheiro .gz no URI de destino para comprimir os dados. Quando importa um ficheiro com uma extensão .gz, o ficheiro é descomprimido automaticamente.

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

Consoante o tamanho dos seus dados, as importações para o AlloyDB e as exportações a partir deste podem demorar muito tempo a serem concluídas. Se uma operação demorar demasiado tempo, pode bloquear outras operações.

Reduza o tempo necessário para concluir cada operação usando lotes de dados mais pequenos. Também pode usar a ferramenta pg_dump para fazer uma exportação manual a partir de um cliente ligado a uma instância de banco de dados de leitura.

Valide a base de dados importada

Após a conclusão de uma operação de importação, estabeleça ligação à sua base de dados através da psql ou de outro cliente e execute os comandos adequados para se certificar de que o conteúdo está correto, como listar tabelas ou consultar contagens de linhas.

Automatize as operações de exportação

Embora o AlloyDB não forneça um método incorporado para automatizar exportações, pode criar uma ferramenta de automatização com outrosGoogle Cloud componentes, como o Cloud Scheduler, o Pub/Sub e as funções do Cloud Run.

Resolução de problemas

Esta secção fornece correções sugeridas para problemas que pode encontrar com as 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 posterior, a importação de dados pode falhar devido a autorizações de esquema se criar a base de dados de destino a partir do template0.

Para resolver este problema, use o seguinte comando para conceder privilégios no esquema public ao utilizador que está a importar dados:

        GRANT ALL ON SCHEMA public TO my_import_user;
        
A operação de importação está a demorar demasiado tempo. Demasiadas associações ativas podem interferir com as operações de importação.

Experimente o seguinte:

  • Feche ligações não usadas.
  • Para garantir que existem recursos suficientes disponíveis, verifique a utilização de memória e CPU da sua instância.
  • Para garantir o máximo de recursos para a importação, reinicie a instância antes de iniciar a operação. Esta ação fecha todas as ligações e termina as tarefas que possam consumir recursos.
Uma operação de importação falha porque um ou mais utilizadores referenciados no ficheiro de captura não existem. Antes de importar um ficheiro de captura, todos os utilizadores de bases de dados que tenham objetos ou receberam autorizações relativamente a objetos na base de dados capturada têm de existir na base de dados de destino. Se não existirem, a operação de importação não consegue recriar os objetos com a propriedade ou as autorizações originais. Crie os utilizadores da base de dados necessários antes da importação.
GRANT stderr: ERROR: must be member of role ROLE_NAME Este erro pode ocorrer se importar um ficheiro de captura SQL que contenha objetos pertencentes a ROLE_NAME ou autorizações concedidas a ROLE_NAME, mas o utilizador da base de dados que está a fazer a importação não for membro de ROLE_NAME. Para resolver este problema, certifique-se de que a função ROLE_NAME existe na base de dados de destino e conceda a subscrição em ROLE_NAME ao utilizador que está a fazer 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 autorizações necessárias para o contentor de destino. Certifique-se de que o contentor do Cloud Storage de destino existe e que as funções roles/storage.objectAdmin ou roles/storage.objectCreator estão concedidas à conta de serviço do AlloyDB. Estas funções permitem-lhe escrever no contentor. Consulte as funções de gestão de identidade e de acesso (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 forma diferente. O formato SQL exporta o esquema e os dados da base de dados e, normalmente, demora mais tempo. O formato CSV exporta apenas os dados resultantes de uma consulta SELECT que fornece. Se uma exportação SQL falhar ou for demasiado lenta, considere exportar tabelas individuais usando CSV.
A exportação está a demorar demasiado tempo. Se uma exportação demorar demasiado tempo na sua instância principal, a exportação pode ser demasiado grande. Considere exportar dados em lotes mais pequenos. Por exemplo, exporte tabelas individualmente em vez de exportar uma base de dados inteira numa única operação. Também pode usar a ferramenta pg_dump para fazer uma exportação manual de um cliente ligado a uma instância de banco de dados de leitura.
Erro Create Extension no registo pg_restore ou falha na importação. O ficheiro de despejo contém referências a uma extensão do PostgreSQL que o AlloyDB não suporta ou que não está instalada no seu cluster. Para remover as referências, edite o ficheiro de despejo ou instale a extensão no cluster se o AlloyDB a suportar.
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 utilizadores e funções, sem palavras-passe, use o seguinte comando para incluir a flag --no-role-passwords:

        pg_dumpall --globals-only --no-role-passwords
        
A operação de exportação excede o tempo limite ou é apresentado o erro Connection reset by peer. Se o armazenamento na nuvem não receber dados num determinado período, a ligação pode ser reposta. Isto pode acontecer se as consultas iniciais da base de dados necessárias para a exportação demorarem demasiado tempo a ser executadas. Se isto ocorrer, experimente fazer uma exportação manual com a ferramenta pg_dump a partir de um cliente ligado 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 de cada vez. Experimente fazer o pedido depois de a operação atual estar concluída.

O que se segue?