Esta dica tende a servir para qualquer distribuição. No entanto, foi testada especificamente no Debian 9 Stretch.
Da mesma forma, parece que na atualização do Debian 8 Jessie, para o Debian 9 Stretch, o processo de upgrade irá instalar e manter as duas versões do PostgreSQL, sendo a 9.4 a que estará ativa e ouvindo a porta padrão 5432, enquanto a versão 9.6 estará ativa e ouvindo uma porta secundária não padrão 5433.
No entanto, na maioria dos casos, o que é desejado no processo de upgrade é que a versão anterior seja substituida pela nova versão. E é justamente isto que iremos fazer neste tutorial.
Todos os comandos abaixo devem ser executados com poderes de root.
Da mesma forma, é recomendado antes de efetuar os passos abaixo descritos, efetuar um backup completo da atual base de dados.
Alguns artigos que podem ajudar nesta tarefa:
Exportar e importando base de dados do PostgreSQL
Exportando usuários do PostgreSQL
Vamos então ao processo de upgrade do PostgreSQL
Execute o comando pg_lsclusters e tanto a versão 9.4 como 9.6 deverão estar online, como no exemplo abaixo:
pg_lsclusters Ver Cluster Port Status Owner Data directory Log file 9.4 main 5432 online postgres /var/lib/postgresql/9.4/main /var/log/postgresql/postgresql-9.4-main.log 9.6 main 5433 online postgres /var/lib/postgresql/9.6/main /var/log/postgresql/postgresql-9.6-main.log
Agora é hora de pararmos e removermos a versão 9.6 do cluster.
pg_dropcluster 9.6 main --stop
E uma nova consulta aos clusters ativos deverá apresentar um resultado parecido com o abaixo:
pg_lsclusters Ver Cluster Port Status Owner Data directory Log file 9.4 main 5432 online postgres /var/lib/postgresql/9.4/main /var/log/postgresql/postgresql-9.4-main.log
Agora, atualizamos a versão 9.4 do cluster para a última versão.
pg_upgradecluster 9.4 main
Uma nova consulta ao estado do cluster deve ser feita, e a versão 9.4 desta vez deve constar como down, como no exemplo abaixo.
pg_lsclusters Ver Cluster Port Status Owner Data directory Log file 9.4 main 5433 down postgres /var/lib/postgresql/9.4/main /var/log/postgresql/postgresql-9.4-main.log 9.6 main 5432 online postgres /var/lib/postgresql/9.6/main /var/log/postgresql/postgresql-9.6-main.log
Verifique se o upgrade funcionou, se seus dados estão corretamente disponíveis.
Estando tudo correto, efetue o processo de remoção da versão 9.4 do cluster
pg_dropcluster 9.4 main
E em seguida, efetue a desinstalação completa da antiga versão (9.4) do PostgreSQL do sistema. No caso de sistemas Debian like, basta:
apt-get --purge remove postgresql-client-9.4 postgresql-9.4
/etc/init.d/postgresql restart pg_lsclusters Ver Cluster Port Status Owner Data directory Log file 9.6 main 5432 online postgres /var/lib/postgresql/9.6/main /var/log/postgresql/postgresql-9.6-main.log
E pronto! Processo de atualização concluído com sucesso se seu resultado for semelhante a resposta da verificação do cluster acima.