pg_dumpall
Nome
pg_dumpall -- salva os bancos de dados de um agrupamento do
PostgreSQL em um arquivo de script
Sinopse
pg_dumpall [opção...]
Descrição
O pg_dumpall é um utilitário para salvar (dump) todos os bancos de dados de um agrupamento do PostgreSQL em um arquivo de script. O arquivo de script contém comandos SQL que podem ser usados como entrada do
psql
para restaurar os bancos de dados. Isto é feito chamando o
pg_dump
para cada banco de dados do agrupamento. O pg_dumpall também salva os objetos globais, comuns a todos os bancos de dados (O pg_dump não salva estes objetos). Atualmente são incluídas informações sobre os usuários do banco de dados e grupos, e permissões de acesso aplicadas aos bancos de dados como um todo.
Portanto, o pg_dumpall é uma solução integrada para realizar cópias de segurança dos bancos de dados. Entretanto, deve ser observada a seguinte limitação: não é possível salvar "objetos grandes", porque o pg_dump não pode salvar estes objetos em arquivos texto. Havendo bancos de dados contendo objetos grandes, estes devem ser salvos usando um dos modos de saída não-texto do pg_dump.
Como o pg_dumpall lê tabelas de todos os bancos de dados, muito provavelmente será necessário se conectar como um superusuário para poder gerar uma cópia completa. Também será necessário o privilégio de superusuário para executar o script produzido, para poder criar usuários e grupos, e para poder criar os bancos de dados.
O script SQL é escrito na saída padrão. Devem ser usados operadores de linha de comando para redirecionar para um arquivo.
O pg_dumpall precisa se conectar várias vezes ao servidor PostgreSQL (uma vez para cada banco de dados), podendo ser necessário solicitar a senha cada uma destas vezes. Neste caso é conveniente existir o arquivo $HOME/.pgpass.
Opções
As seguintes opções de linha de comando controlam o conteúdo e o formato da saída:
- -a
--data-only
-
Salva somente os dados, não salva o esquema (definições de dado).
- -c
--clean
-
Inclui comandos para remover (drop) os objetos do banco de dados antes dos comandos para criá-los.
- -d
--inserts
-
Salva os dados como comandos INSERT, em vez de COPY. Torna a restauração muito lenta; sua utilização principal é para fazer cópias de segurança que possam ser carregadas em outros bancos de dados que não o PostgreSQL.
- -D
--column-inserts
--attribute-inserts
-
Salva os dados como comandos INSERT explicitando os nomes das colunas (INSERT INTO tabela (coluna, ...) VALUES ...). Torna a restauração muito lenta, mas é necessário se for desejado mudar a ordem das colunas.
- -g
--globals-only
-
Salva somente os objetos globais (usuários e grupos), e não os banco de dados.
- -i
--ignore-version
-
Ignora a diferença de versão entre o pg_dump e o servidor de banco de dados.
O pg_dump pode tratar bancos de dados de versões anteriores do PostgreSQL, mas as versões muito antigas não são mais suportadas (atualmente as anteriores a 7.0). Esta opção deve ser utilizada se for necessário desconsiderar a verificação de versão (mas se o pg_dumpall não for bem-sucedido, não diga que não foi avisado).
- -o
--oids
-
Salva os identificadores de objeto (OIDs) de todas as tabelas como parte dos dados. Esta opção deve ser usada 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.
- -s
--schema-only
-
Salva somente o esquema (definições dos dados), não os dados.
- -v
--verbose
-
Especifica o modo verboso. Faz a aplicação pg_dumpall exibir mensagens de progresso na saída de erro padrão.
- -x
--no-privileges
--no-acl
-
Impede salvar os privilégios de acessos (comandos GRANT/REVOKE).
As seguintes opções de linha de comando controlam os parâmetros de conexão com o servidor de banco de dados:
- -h hospedeiro
-
Especifica o nome de hospedeiro da máquina onde o servidor está executando. Se o nome iniciar por uma barra (/) é usado como o diretório do soquete do domínio Unix. O padrão é obter o nome a partir da variável de ambiente PGHOST, se esta estiver definida, senão tentar uma conexão pelo soquete do domínio Unix.
- -p porta
-
Especifica a porta TCP, ou a extensão de arquivo do soquete do domínio Unix local, onde o servidor está escutando as conexões. O padrão é obter a partir da variável de ambiente PGPORT, se esta estiver definida, senão o padrão compilado.
- -U nome_do_usuário
-
Conectar como o usuário especificado.
- -W
-
Força a solicitação da senha, o que deve acontecer automaticamente quando o servidor requer autenticação por senha.
Ambiente
- PGHOST
PGPORT
PGUSER
-
Parâmetros de conexão padrão.
Observações
Como o pg_dumpall chama o pg_dump internamente, algumas mensagens de diagnósticos se referem ao pg_dump.
Ao término da restauração, é aconselhável executar o comando ANALYZE em todos os bancos de dados para que o otimizador tenha estatísticas úteis. Também pode ser executado vacuumdb -a -z para analisar todos os bancos de dados.
Exemplos
Para salvar todos bancos de dados:
$ pg_dumpall > db.out
Para recarregar este banco de dados deve ser utilizado, por exemplo:
$ psql -f db.out template1
(Neste caso o banco de dados a se conectar não tem importância, porque o arquivo de script criado pelo pg_dumpall contém os comandos apropriados para criar e conectar aos bancos de dados salvos).
Veja também
pg_dump
. Veja aí os detalhes sobre as condições de erro possíveis.