postgresql – de 9.4 à 9.6 suite à un upgrade de debian jessie vers stretch

Suite à la mise à jour de WAPT 1.3 vers 1.6 sous Debian jessie et ensuite à un full-upgrade vers Debian stretch, vous allez vous retrouver en présence de deux instances PostgreSQL (ou 2 clusters). Voici la procédure pour migrer de PostgreSQL 9.4 vers 9.6.

Pré-requis avant migration

  • Fermer l’ensemble des applications utilisant le service PostgreSQL : WAPT, …
  • Stopper le service PostgreSQL :
# systemctl stop waptserver
# systemctl stop postgresql

Mise à jour du moteur PostgreSQL 9.4 vers 9.6

Lister les cluster disponible sur la machine :

# pg_lsclusters
Ver Cluster Port Status Owner Data directory Log file
9.4 main 5432 down postgres /var/lib/postgresql/9.4/main /var/log/postgresql/postgresql-9.4-main.log
9.6 main 5433 down postgres /var/lib/postgresql/9.6/main /var/log/postgresql/postgresql-9.6-main.log

Dans un premier temps, nous supprimons le cluster préalablement créé lors de la mise à jour vers debian stretch

# pg_dropcluster 9.6 main --stop
Redirecting stop request to systemctl

Ensuite nous procédons à la mise à jour du cluster 9.4 en 9.6 :

# pg_upgradecluster 9.4 main
Stopping old cluster...
[...]
Success. Please check that the upgraded cluster works. If it does,
you can remove the old cluster with

Nettoyage du moteur PostgreSQL 9.4

Précédemment nous avons migré les bases du moteur 9.4 vers 9.6. Avec la commande suivant nous confirmons l’arrêt du moteur 9.4 et nous pouvons procéder à sa suppression.

# 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

Suppression du cluster 9.4 :

# pg_dropcluster 9.4 main

Vérification de la suppression :

# 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

Après vérification il est possible de supprimer totalement l’ancienne version de PostgreSQL 9.4 :

# apt-get remove --purge libssl1.0.0 libxapian22 postgresql-9.4 postgresql-client-9.4 postgresql-contrib-9.4 

Désactiver IPV6 pour PostgreSQL

Depuis le répertoire /etc/postgresql/9.6/main/ :

# cd /etc/postgresql/9.6/main/

Ajouter la ligne suivant au fichier postgresql.conf

# vi /etc/postgresql/9.6/main/postgresql.conf
listen_addresses = '127.0.0.1'

Commenter la ligne 94 du fichier pg_hba.conf

# vi /etc/postgresql/9.6/main/pg_hba.conf
# IPv6 local connections:
#host    all             all             ::1/128                 md5

Relancer PostgreSQL et vérifier la bonne prise en compte des modifications:

# netstat -ntl | grep 5432
tcp        0      0 127.0.0.1:5432          0.0.0.0:*               LISTEN