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
edirectory
são permitidos se o ficheiro de despejo se destinar a ser usado com opg_restore
.Para o formato
plain-text
, exporte para umSQL dump file
em alternativa. Este formato não é compatível compg_restore
e tem de ser importado através do comando de importação da consola Google Cloud ou do clientepsql
.--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çãoDROP
produzida pela flagclean
.
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çõesDROP 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 doO que se segue?
- Saiba como verificar o estado das operações de importação e exportação.
- Saiba mais sobre as práticas recomendadas para importar e exportar dados.
- Saiba mais sobre o utilitário pg_dump do PostgreSQL.
- Problemas conhecidos para importações e exportações.