Exporte e importe com pg_dump, pg_dumpall e pg_restore

Esta página descreve a exportação e a importação de dados para instâncias do Cloud SQL através dos comandos pg_dump, pg_dumpall e pg_restore.

Antes de começar

As exportações usam recursos da base de dados, mas não interferem com as operações normais da base de dados, a menos que a instância tenha um aprovisionamento insuficiente.

Para ver as práticas recomendadas, consulte o artigo Práticas recomendadas para importar e exportar dados.

Após concluir uma operação de importação, valide os resultados.

Saiba mais sobre as utilidades pg_dump, pg_dumpall e pg_restore.

Exporte dados do Cloud SQL para PostgreSQL

Pode usar o Cloud SQL para fazer uma exportação a partir da Google Cloud consola, da CLI gcloud ou da API.

  • Para exportar uma única base de dados do PostgreSQL, use o utilitário pg_dump.
  • Para exportar todas as bases de dados PostgreSQL de um cluster, use o utilitário pg_dumpall.

Quando usar qualquer um dos utilitários, certifique-se de que também usa as opções necessárias para garantir que o ficheiro de exportação resultante é válido para importação de volta para o Cloud SQL.

Exporte dados de um servidor PostgreSQL no local através do pg_dump

Para exportar uma base de dados que não seja gerida pelo Cloud SQL para importação posterior para o Cloud SQL, use o utilitário pg_dump com as seguintes flags:

  • --no-owner

    Os comandos de alteração de propriedade não podem ser incluídos no ficheiro de despejo.

  • --format

    Os formatos custom e directory são permitidos se o ficheiro de despejo se destinar a ser usado com o pg_restore.

    Para o formato plain-text, exporte para um SQL dump file em alternativa. Este formato não é compatível com pg_restore e tem de ser importado através do comando de importação da consola Google Cloud ou do cliente psql.

  • --no-acl

    Esta flag é obrigatória se o seu despejo contiver declarações para conceder ou revogar a associação a uma função SUPERUSER.

  • --clean

    Esta flag opcional permite-lhe incluir a declaração SQL DROP <object> necessária para eliminar (limpar) objetos da base de dados antes de os importar.

  • --if-exists

    Esta flag opcional permite-lhe incluir a declaração SQL IF EXISTS com cada declaração DROP produzida pela flag clean.

Além disso, tem de remover tudo o seguinte:

  • Declarações relacionadas com extensões, se o Cloud SQL não suportar essa extensão. Consulte o artigo Extensões do PostgreSQL para ver a lista de extensões suportadas.
  • CREATE EXTENSION ou declarações DROP EXTENSION que fazem referência a plpgsql. Esta extensão está pré-instalada nas instâncias do Cloud SQL Postgres.
  • COMMENT ON EXTENSION declarações.

Confirme se a codificação predefinida, conforme determinado pelas definições da base de dados, está correta para os seus dados. Se necessário, pode substituir a predefinição com a flag --encoding.

Exporte dados no formato custom do Cloud SQL para PostgreSQL

Para usar o formato personalizado, numa linha de comandos, execute pg_dump:

pg_dump \
-U USERNAME \
--format=custom \
--no-owner \
--no-acl \
DATABASE_NAME > DATABASE_NAME.dmp

Exporte dados de vários ficheiros em paralelo do Cloud SQL para PostgreSQL

Só pode usar o formato de saída directory para exportar dados de vários ficheiros em paralelo.

Para exportar em paralelo, use a flag -j NUM_CORES. NUM_CORES é o número de núcleos na instância de origem.

Exporte todas as bases de dados

pg_dumpall é uma utilidade que lhe permite extrair todas as bases de dados PostgreSQL de um cluster para um único ficheiro de script. Este ficheiro tem comandos SQL que pode usar para restaurar as bases de dados.

Para exportar todas as bases de dados PostgreSQL numa instância do Cloud SQL, use o utilitário pg_dumpall com as seguintes flags obrigatórias:

  • exclude-database=cloudsqladmin
  • exclude-database=template*

O utilitário pg_dumpall não tem acesso às bases de dados cloudsqladmin ou template.

Para exportar todas as bases de dados PostgreSQL, execute o seguinte comando:

pg_dumpall \
-h HOST_NAME -l DATABASE_NAME --exclude-database=cloudsqladmin \
--exclude-database=template* > pg_dumpall.sql

Para ver as palavras-passe das funções ao despejar funções com pg_dumpall, defina a flag cloudsql.pg_authid_select_role para um nome de função do PostgreSQL. Se a função existir, tem acesso só de leitura (SELECT) à tabela pg_authid. Esta tabela contém palavras-passe de funções.

Importar

Use o utilitário pg_restore para importar um arquivo para uma base de dados do Cloud SQL. pg_restore só funciona com arquivos criados por pg_dump nos formatos custom ou directory. Saiba mais sobre pg_restore.

Importe a partir de um ficheiro de captura criado com o formato custom para o Cloud SQL para PostgreSQL

Se o ficheiro de despejo foi criado com um formato personalizado, execute o seguinte comando:

pg_restore \
--list DATABASE_NAME.dmp | sed -E 's/(.* EXTENSION )/; \1/g' >  DATABASE_NAME.toc

O pós-processamento de sed comenta todas as declarações de extensão no ficheiro de captura SQL.

Quando importar usando pg_restore, especifique a tabela de conteúdos processada com o argumento da linha de comandos "--use-list=DATABASE_NAME.toc".

Importe dados de vários ficheiros em paralelo para o Cloud SQL para PostgreSQL

Só pode importar dados de vários ficheiros em paralelo para arquivos criados com os formatos de saída directory e custom.

Para importar em paralelo, use a flag -j NUM_CORES. NUM_CORES é o número de núcleos na instância de destino.

Desempenho da importação no Cloud SQL para PostgreSQL

O desempenho do

O que se segue?