O formato interno de armazenamento dos dados muda com as novas versões do PostgreSQL. Portanto, se estiver sendo feita a atualização de uma instalação existente, que não possua um número de versão "8.0.x", é necessário fazer uma cópia de segurança e restaurar os dados conforme mostrado. Estas instruções assumem que a instalação existente se encontra sob o diretório /usr/local/pgsql, e que a área de dados está no diretório /usr/local/pgsql/data. Os caminhos devem ser modificados conforme seja apropriado.
Certifique-se que o banco de dados não seja atualizado durante ou após a realização da cópia de segurança. Isto não afeta a integridade da cópia de segurança, mas os dados modificados, obviamente, não serão incluídos. Se for necessário, devem ser editadas as permissões no arquivo /usr/local/pgsql/data/pg_hba.conf, ou equivalente, para não permitir acesso pelos demais usuários.
Para realizar a cópia de segurança da instalação de banco de dados deve-se executar:
pg_dumpall > arquivo_de_saída
Se for necessário preservar os OIDs (como quando são utilizados como chaves estrangeiras), então deve ser utilizada a opção -o ao se executar o pg_dumpall.
O pg_dumpall não salva os objetos grandes. Se for necessário salvá-los, deve ser consultada a Seção 22.1.4.
Para fazer a cópia de segurança, pode ser utilizado o utilitário pg_dumpall da versão sendo usada atualmente. Entretanto, para obter melhores resultados, deve-se tentar utilizar o utilitário pg_dumpall do PostgreSQL 8.0.0, uma vez que esta versão contém correções de erros e melhorias com relação às versões mais antigas. Embora este conselho possa parecer sem sentido, uma vez que a nova versão ainda não foi instalada, é aconselhável segui-lo se estiver sendo planejado instalar a nova versão em paralelo com a versão antiga. Neste caso pode-se completar a instalação normalmente, e transferir os dados depois. Isto também pode diminuir o tempo de máquina parada.
Se a nova versão estiver sendo instalada no mesmo local da versão antiga, então o servidor antigo deve ser parado antes de instalar os novos arquivos:
pg_ctl stop
Nos sistemas onde o PostgreSQL é ativado quando a máquina é ligada, provavelmente existe um arquivo de inicialização para obter o mesmo resultado. Por exemplo, no sistema operacional Red Hat Linux pode-se verificar que
/etc/rc.d/init.d/postgresql stop
funciona.
As versões muito antigas podem não ter o utilitário pg_ctl. Se este não puder ser encontrado, ou se não funcionar, o ID de processo do servidor antigo deve ser descoberto utilizando, por exemplo,
ps ax | grep postmaster
e depois ser enviado um sinal para parar o processo servidor desta forma:
kill -INT ID_processo
Se estiver sendo feita a instalação no mesmo local da versão antiga, então também é uma boa idéia mudar de lugar a instalação antiga, para o caso de haver problema e ser necessário voltar atrás. Deve ser usado um comando como este:
mv /usr/local/pgsql /usr/local/pgsql.antigo
Após ter sido feita a instalação do PostgreSQL 8.0.0, deve ser criado o novo diretório de banco de dados e ativado o novo servidor. Lembre-se que é necessário executar estes comandos através de uma conta especial de usuário do banco de dados (que já existe se estiver sendo feita uma atualização).
/usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data /usr/local/pgsql/bin/postmaster -D /usr/local/pgsql/data
Por fim, os dados são restaurados pelo comando
/usr/local/pgsql/bin/psql -d template1 -f arquivo_de_saída
usando o novo psql.
Estes tópicos são mostrados na Seção 22.4, que incentivamos sua leitura em todos os casos.