Nesta página, você verá como exportar e importar dados para as instâncias do Cloud SQL usando pg_dump, pg_dumpall e pg_restore.
Antes de começar
As exportações usam recursos do banco de dados, mas não interferem nas operações normais do banco de dados, a menos que a instância tenha um provisionamento menor do que deveria ser.
Para ver as práticas recomendadas, consulte Práticas recomendadas para importação e exportação de dados.
Depois de concluir uma operação de importação, verifique os resultados.
Saiba mais sobre os utilitários pg_dump
, pg_dumpall
e pg_restore
.
Exportar dados do Cloud SQL para PostgreSQL
É possível usar o Cloud SQL para realizar uma exportação no Console do Google Cloud, na CLI gcloud ou na API.
- Para exportar um único banco de dados PostgreSQL, use o utilitário
pg_dump
. - Para exportar todos os bancos de dados PostgreSQL de um cluster, use o utilitário
pg_dumpall
.
Ao usar qualquer um dos utilitários, use também as opções necessárias para garantir que o arquivo de exportação resultante seja válido para importação de volta ao Cloud SQL.
Exportar dados de um servidor PostgreSQL local usando pg_dump
Para exportar um banco de dados que não é gerenciado pelo Cloud SQL, para importação
posterior no Cloud SQL, use o utilitário pg_dump
com as sinalizações
a seguir:
--no-owner
Os comandos de mudança de propriedade não podem ser incluídos no arquivo dump.
--format
Os formatos
custom
edirectory
serão permitidos se o arquivo dump for usado compg_restore
.Para o formato
plain-text
, exporte para umSQL dump file
. Esse formato não é compatível compg_restore
e precisa ser importado usando o comando de importação do console do Google Cloud ou o clientepsql
.--no-acl
Esse sinalizador é necessário caso seu despejo tenha instruções para conceder ou revogar assinaturas em um papel
SUPERUSER
.--clean
Essa flag opcional permite incluir a instrução SQL
DROP <object>
necessária para descartar (limpar) objetos de banco de dados antes da importação.--if-exists
Essa flag opcional permite incluir a instrução SQL
IF EXISTS
em cada instruçãoDROP
produzida pela flagclean
.
Além disso, remova todos os itens a seguir:
- Instruções relacionadas à extensão, se o Cloud SQL não for compatível com ela. Consulte Extensões do PostgreSQL para acessar a lista de extensões compatíveis.
- instruções
CREATE EXTENSION
ouDROP EXTENSION
que referem a plpgsql. Essa extensão vem pré-instalada nas instâncias do Cloud SQL Postgres. COMMENT ON EXTENSION
.
Confirme se a codificação padrão dos dados, conforme determinado pelas configurações
do banco de dados, está correta. Se necessário, é possível substituir o padrão com a
sinalização --encoding
.
Exportar dados usando o formato custom
do Cloud SQL para PostgreSQL
Para usar o formato personalizado, em uma linha de comando, execute pg_dump
:
pg_dump \ -U USERNAME \ --format=custom \ --no-owner \ --no-acl \ DATABASE_NAME > DATABASE_NAME.dmp
Exportar dados de vários arquivos em paralelo com o Cloud SQL para PostgreSQL
Só é possível usar o formato de saída directory
para exportar dados de vários arquivos em paralelo.
Para exportar em paralelo, use a sinalização -j NUM_CORES
.
NUM_CORES é o número de núcleos na instância de origem.
Exportar todos os bancos de dados
O pg_dumpall
é um utilitário que permite extrair todos os bancos de dados PostgreSQL de um cluster em um único arquivo de script. Esse arquivo tem comandos SQL que podem ser usados para restaurar os bancos de dados.
Para exportar todos os bancos de dados PostgreSQL em uma instância do Cloud SQL, use o utilitário pg_dumpall
com as seguintes sinalizações obrigatórias:
exclude-database=cloudsqladmin
exclude-database=template*
O utilitário pg_dumpall
não tem acesso aos bancos de dados cloudsqladmin
ou template
.
Para exportar todos os bancos de dados do PostgreSQL, execute o seguinte comando:
pg_dumpall \ -h HOST_NAME -l DATABASE_NAME –exclude-database=cloudsqladmin \ –exclude-database=template* > pg_dumpall.sql
Para visualizar senhas de papel ao despejar papéis com pg_dumpall
, defina a sinalização cloudsql.pg_authid_select_role
como um nome de papel do PostgreSQL. Se o papel existir, ele terá acesso somente leitura (SELECT
) à tabela pg_authid
. Essa tabela contém senhas de papéis.
Importar
Use o utilitário pg_restore
para importar um arquivo para um
banco de dados do Cloud SQL. pg_restore
funciona apenas com arquivos
criados por pg_dump nos formatos
custom
ou directory
.
Saiba mais sobre
pg_restore
.
Importar de um arquivo dump criado com o formato custom
para o Cloud SQL para PostgreSQL
Se o arquivo dump tiver sido criado no 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 comentários sed
remove todas as instruções de extensão
no arquivo dump SQL.
Ao fazer a importação usando pg_restore
, especifique o sumário processado com
o argumento de linha de comando "--use-list=DATABASE_NAME.toc".
Importe dados de vários arquivos em paralelo ao Cloud SQL para PostgreSQL
Só é possível importar dados de vários arquivos em paralelo apenas para arquivos criados usando os formatos de saída directory
e
custom
.
Para importar em paralelo, use a sinalização -j NUM_CORES
.
NUM_CORES é o número de núcleos na instância de destino.
Importar o desempenho no Cloud SQL para PostgreSQL
A seguir
- Saiba como verificar o status de operações de importação e exportação.
- Saiba mais sobre práticas recomendadas para importar e exportar dados.
- Saiba mais sobre o utilitário PostgreSQL pg_dump.
- Problemas conhecidos para importações e exportações.