Como atualizar do PostgreSQL 9.4 para 9.6

image_pdfimage_print

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.

Gostou? Tire um minutinho e dê sua contribuição para Drall Dev Community no Patreon!