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
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:
|
| 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
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?
- Importe dados através de ficheiros de despejo.
- Exporte dados através de ficheiros de despejo.
- Importe dados através de ficheiros CSV.
- Exporte dados através de ficheiros CSV.
- Importe dados através de ficheiros SQL.
- Exporte dados através de ficheiros SQL.
- Ative as cópias de segurança automáticas.
- Restaurar a partir de uma cópia de segurança.