Para otimizar o desempenho, reduzir os custos de armazenamento e evitar interrupções operacionais ao mover dados para dentro ou para fora do AlloyDB para PostgreSQL, siga estas práticas recomendadas:
- Não use os buckets de pagamentos do solicitante do Cloud Storage para importações ou exportações.
- Use as sinalizações corretas ao criar um arquivo dump SQL.
- Compactar 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 que tenha 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. Esse agente geralmente não tem o contexto ou a configuração para cobrar o projeto do solicitante pelo acesso aos dados, o que faz com que as operações que envolvem buckets de Pagamento do Solicitante falhem.
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, talvez a importação não seja bem-sucedida. Para informações sobre como exportar dados para importação no AlloyDB, consulte Exportar um arquivo DMP e Exportar um arquivo SQL.
Compactar dados para reduzir custos
O AlloyDB é compatível com a importação e exportação de arquivos .gz compactados
do Cloud Storage. A compactação pode economizar um espaço de armazenamento significativo no Cloud Storage e reduzir os custos de armazenamento, especialmente ao exportar grandes quantidades de dados. Ao exportar um dump SQL ou um arquivo CSV
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 de dados menores. Também
é possível usar a ferramenta pg_dump para realizar 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 forneç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, sugerimos 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 em template0. |
Para resolver isso, use o seguinte comando para conceder privilégios no esquema
GRANT ALL ON SCHEMA public TO 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 de bancos de dados que têm objetos ou receberam permissões em objetos no banco de dados de dump precisam estar no BD de destino. Se eles não existirem, a operação de importação não vai 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 de propriedade de ROLE_NAME ou permissões concedidas a
ROLE_NAME, mas o usuário do banco de dados que está realizando a importação
não for membro de ROLE_NAME. |
Para resolver isso, verifique se o papel ROLE_NAME existe
no banco de dados de destino e conceda a associação em
ROLE_NAME ao usuário que está realizando 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 do Cloud Storage de destino 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 ela grave no bucket. Consulte
Papéis do Identity and Access Management (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 o esquema e os dados do banco de dados e, normalmente, leva mais tempo. O formato CSV
exporta apenas os dados resultantes de uma consulta SELECT que
você fornece. |
Se uma exportação de SQL falhar ou for muito lenta, considere exportar tabelas individuais usando CSV. |
| A exportação está demorando muito. | Se uma exportação demorar muito na instância principal, talvez ela seja muito grande. | Exporte os dados em lotes menores. Por exemplo,
exporte tabelas individualmente em vez de exportar um banco de dados
inteiro em uma única operação. Também é possível usar a ferramenta pg_dump para realizar 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 não é compatível com o AlloyDB 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 ocorrer, 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 dump.
- Exportar dados usando arquivos dump.
- Importar dados usando arquivos CSV.
- Exportar dados usando arquivos CSV.
- Importar dados usando arquivos SQL.
- Exportar dados usando arquivos SQL.
- Ativar backups automáticos.
- Restaurar a partir de um backup.