O pg_dumpall é um utilitário para exportar ("dumping") todos os bancos de dados do PostgreSQL para um arquivo script. O arquivo script contém comandos SQL que podem ser usados como entrada do psql para restaurar os bancos de dados. Exporta chamando pg_dump para cada banco de dados do PostgreSQL. O pg_dumpall também exporta objetos globais que são comuns a todos os bancos de dados (O pg_dump não salva estes objetos). Atualmente isto inclui informações sobre os usuários do banco de dados e os grupos.
Portanto, o pg_dumpall é uma solução integrada para realizar cópias de segurança dos bancos de dados. Mas observe a limitação: não pode exportar "objetos grandes", porque o pg_dump não exporta estes objetos para arquivos texto. Se existirem bancos de dados contendo objetos grandes, estes devem ser exportados usando um dos modos não-texto do pg_dump.
Como o pg_dumpall lê as tabelas de todos os bancos de dados, muito provavelmente será necessário se conectar como um superusuário para poder gerar uma exportação completa. Também será necessário o privilégio de superusuário para executar o script salvo, 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 na linha de comando para redirecioná-lo para um arquivo.
O pg_dumpall aceita os seguintes argumentos de linha de comando:
Gera comandos para excluir (drop) os objetos do banco de dados antes de criá-los (Esta opção é sem utilidade prática, porque o script gerado espera criar os bancos de dados, e estes estarão sempre vazios após a criação).
Somente exporta os objetos globais (usuários e grupos), não os bancos de dados.
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. O padrão é obtido da variável de ambiente PGHOST, se estiver definida, senão é tentada uma conexão pelo soquete do domínio Unix.
O número da porta na qual o servidor está aguardando as conexões. O padrão é obtido da variável de ambiente PGPORT se estiver definida, ou do padrão da compilação.
Nome do usuário para se conectar.
Força a solicitação da senha. Deve acontecer automaticamente se o servidor requerer autenticação por senha.
Todos os outros parâmetros de linha de comando são passados para as chamadas subjacentes do pg_dump , sendo útil para controlar certos aspectos do formato da saída, mas algumas opções como -f, -t e nome_bd devem ser evitadas.
Para exportar todos bancos de dados:
$ pg_dumpall > db.out
Para importar estes bancos de dados deve-se usar, por exemplo:
$ psql -f db.out template1
(Não é importante em qual banco de dados se conectar porque o script criado pelo pg_dumpall contém os comandos apropriados para criar e conectar aos bancos de dados salvos).