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
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:
|
| 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
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
- Importar dados usando arquivos de despejo.
- Exporte dados usando arquivos de dump.
- Importe dados usando arquivos CSV.
- Exportar dados usando arquivos CSV.
- Importe dados usando arquivos SQL.
- Exporte dados usando arquivos SQL.
- Ative os backups automáticos.
- Restaurar a partir de um backup.