Backup com pg_dump - raio-x

<< Click to Display Table of Contents >>

Navigation:  PostgreSQL > Manutenção > Backup e Restore >

Backup com pg_dump - raio-x

Previous pageReturn to chapter overviewNext page

pg_dump --  extrai um banco de dados do PostgreSQL para um arquivo script ou de exportação

 

Synopsis

 

pg_dump [-a | -s] [-b] [-c] [-C] [-d | -D] [-f arquivo] [-F formato] [-i] [-n | -N] [-o] [-O] [-R] [-S] [-t tabela] [-v] [-x] [-X palavra_chave] [-Z 0...9] [-h hospedeiro] [-p porta] [-U nome_do_usuário] [-W] nome_bd

 

 

 Descrição

 

O pg_dump é um utilitário para salvar um banco de dados do PostgreSQL em um arquivo script ou de exportação. Os arquivos script são no formato texto-puro e contêm os comandos SQL necessários para reconstruir o banco de dados no estado em que este se encontrava no momento que foi salvo.

 

O pg_dump salva as informações necessárias para regerar todos os tipos, funções, tabelas, índices, agregações e operadores definidos pelo usuário. Adicionalmente, todos os dados são salvos no formato texto para que possam ser prontamente importados, bem como tratados por ferramentas de edição.

 

Opções

 

O pg_dump aceita os seguintes argumentos de linha de comando (As formas longas das opções estão disponíveis apenas em algumas plataformas).

 

nome_bd

   Especifica o nome do banco de dados a ser exportado.

-a

   Exporta somente os dados, não o esquema (definições dos dados).

   Esta opção só faz sentido para o formato texto-puro. Para os outros formatos esta opção pode ser especificada ao se chamar o pg_restore.

 

-b

   Exporta os objetos binários grandes (blobs).

 

-c

   Gera comandos para excluir (drop) os objetos do banco de dados antes de criá-los.

 

   Esta opção só faz sentido para o formato texto-puro. Para os outros formatos esta opção pode ser especificada ao se chamar o pg_restore.

 

-C

   Inicia a saída por um comando para criar o próprio banco de dados e se conectar ao banco de dados criado (Com um script assim, não importa em qual o banco de dados se está conectado antes de executar o script).

 

   Esta opção só faz sentido para o formato texto-puro. Para os outros formatos esta opção pode ser especificada ao se chamar o pg_restore.

 

-d

   Exporta os dados como comandos INSERT (em vez de COPY), tornando a importação muito lenta, porém os arquivos exportados tornam-se mais portáveis para outros SGBDR.

 

-D

   Exporta os dados como comandos INSERT com nomes explícitos das colunas (INSERT INTO tabela (coluna, ...) VALUES ...), tornando a importação muito lenta, mas é necessário se for desejado mudar a ordem das colunas.

 

-f arquivo

   Envia a saída para o arquivo especificado. Se for omitido, a saída padrão é usada.

 

-F formato

   Seleciona o formato da saída. O formato pode ser um dos seguintes:

 

p

       Exporta um script SQL para um arquivo texto-puro (padrão)

 

t

       Exporta um arquivo tar adequado para servir de entrada para o pg_restore. Usando este formato de exportação pode-se reordenar e/ou excluir elementos do esquema durante a restauração do banco de dados. Também é possível limitar quais dados são importados durante a restauração.

 

 c

       Exporta um arquivo personalizado apropriado para servir de entrada para o pg_restore. Este é o formato mais flexível porque permite a reordenação da importação dos dados, assim como dos elementos do esquema. Este formato também é comprimido por padrão.

 

-i

   Ignora a diferença de versão entre o pg_dump e o servidor de banco de dados. Como o pg_dump trabalha muito ligado aos catálogos do sistema, toda versão do pg_dump é feita para ser usada somente com a versão correspondente do servidor de banco de dados. Use esta opção se for necessário desconsiderar a verificação de versão (mas, se o pg_dump falhar, não diga que não foi avisado).

 

-n

   Suprime as aspas (") em torno dos identificadores a menos que seja absolutamente necessário. Pode causar problemas na importação dos dados exportados se existirem palavras reservadas usadas pelos identificadores. Este era o comportamento padrão para o pg_dump antes da versão 6.4.

 

-N

   Inclui aspas em torno dos identificadores. Este é o padrão.

 

-o

   Exporta os identificadores de objeto (OIDs) para todas as tabelas. Deve-se usar esta opção quando a coluna OID é referenciada de alguma maneira (por exemplo, em uma restrição de chave estrangeira). Caso contrário esta opção não deve ser usada.

 

-O

   Não gera comandos para definir o mesmo dono do objeto do banco de dados original. Tipicamente, o pg_dump gera comandos \connect (específico do psql) para definir o dono dos elementos do esquema. Consulte também as opções -R e -X use-set-session-authorization. Observe que a opção -O não impede todas as reconexões ao banco de dados, mas somente àquelas que são usadas exclusivamente para acertar o dono.

 

   Esta opção só faz sentido para o formato texto-puro. Para os outros formatos esta opção pode ser especificada ao se chamar o pg_restore.

 

-R

   Proíbe o pg_dump gerar um script que requeira reconexões com o banco de dados quando for realizada a importação. Usualmente, um script de importação necessita reconectar várias vezes como usuários diferentes para especificar o dono original dos objetos. Esta opção é um instrumento bastante rudimentar, porque faz o pg_dump perder a informação sobre o dono, a menos que seja usada a opção -X use-set-session-authorization.

 

   Uma das razões possíveis para não se desejar a reconexão durante a importação é o acesso ao banco de dados requerer intervenção manual (por exemplo, senhas).

 

   Esta opção só faz sentido para o formato texto-puro. Para os outros formatos esta opção pode ser especificada ao se chamar o pg_restore.

 

-s

   Exporta somente o esquema (definições dos dados), sem os dados.

 

-S nome_do_usuário

   Os scripts e os arquivos de exportação gerados pelo pg_dump necessitam do privilégio de superusuário em certos casos, como desativar gatilhos ou definir o dono dos elementos do esquema. Esta opção especifica o nome do usuário a ser usado nestes casos.

 

-t tabela

   Exporta os dados da tabela apenas.

 

-v

   Especifica o modo verboso.

 

-x

   Impede gerar os privilégios de acessos (comandos GRANT/REVOKE).

 

-X use-set-session-authorization

   Normalmente, se o script (modo texto-puro) gerado pelo pg_dump necessita trocar o usuário corrente do banco de dados (por exemplo, para definir o dono correto do objeto) é usado o comando \connect do psql. Este comando na verdade abre uma nova conexão, o que pode requerer a intervenção manual (por exemplo, senhas). Se for usada a opção -X use-set-session-authorization, então o pg_dump vai usar o comando SET SESSION AUTHORIZATION. Embora produza o mesmo efeito, requer que o usuário que for fazer a importação do banco de dados a partir do script gerado seja um superusuário. Esta opção substitui a opção -R.

 

   Como o SET SESSION AUTHORIZATION é um comando SQL padrão, enquanto o \connect somente funciona no psql, esta opção também aumenta a portabilidade teórica do script gerado.

 

   Esta opção só faz sentido para o formato texto-puro. Para os outros formatos esta opção pode ser especificada ao se chamar o pg_restore.

 

-Z 0..9

   Especifica o nível de compressão a ser usado nos arquivos com formatos que suportam compressão (atualmente somente o formato personalizado suporta compressão).

 

O pg_dump também aceita os seguintes argumentos de linha de comando para os parâmetros de conexão:

 

-h hospedeiro

   Especifica o nome da máquina onde o servidor está executando. Se o nome iniciar por uma barra (/), é considerado como sendo o diretório do soquete do domínio Unix.

 

-p porta

   Especifica a porta Internet TCP/IP, ou o soquete do domínio local Unix, onde o servidor está aguardando as conexões. O padrão para o número da porta é 5432, ou o valor da variável de ambiente PGPORT (se estiver definida).

 

-U nome_do_usuário

   Nome do usuário para se conectar.

 

-W

   Força a solicitação da senha. Deve acontecer automaticamente se o servidor requerer autenticação por senha.

 

 

Exemplo:

 

Para exportar um banco de dados:

 

$ pg_dump meu_bd > db.out