Ces instructions supposent que l'installation existante se trouve dans le répertoire /usr/local/pgsql, et que l'aire de données est dans /usr/local/pgsql/data. Il convient de modifier ces chemins en fonction de l'installation actuelle.
Le format de stockage interne des données change typiquement à chaque version majeure de PostgreSQL™. C'est pourquoi, lors de la mise à jour d'une installation qui n'est pas du numéro de version « 8.4.x », il faut sauvegarder et restaurer ses données. Lors d'une mise à jour à partir de PostgreSQL™ « 8.4.x », la nouvelle version peut utiliser les fichiers de données actuels ; les étapes de sauvegarde et de restauration ci-dessous, inutiles, peuvent être ignorées.
Lors de la sauvegarde, il est préférable de s'assurer que la base de données n'est pas actualisée. Non que cela affecte l'intégrité de la sauvegarde, mais parce que les données modifiées ne sont pas incluses. Il peut, dans ce cas, être nécessaire d'éditer les permissions dans le fichier /usr/local/pgsql/data/pg_hba.conf (ou équivalent) pour interdire les accès autres que celui utile à la sauvegarde.
Pour sauvegarder la base, saisir :
pg_dumpall > fichierdesortie
Pour conserver les identifiants d'objets (OID) (lorsqu'ils sont utilisés comme clé étrangère), utiliser l'option -o lors de l'exécution de pg_dumpall.
Pour effectuer la sauvegarde, il est possible d'utiliser la commande pg_dumpall incluse dans la distribution de la version actuelle. Cependant, pour de meilleurs résultats, il est préférable d'utiliser la commande pg_dumpall contenue dans PostgreSQL™ 8.4.17 puisqu'elle corrige les erreurs des versions précédentes. Bien que ce conseil puisse paraître absurde, tant que la nouvelle version n'est pas installée, il convient de le suivre si l'objectif est d'installer la nouvelle version en parallèle de l'ancienne. Dans ce cas, il est possible de terminer normalement l'installation et de transférer les données dans un second temps, ce qui réduit l'indisponibilité.
Arrêter l'ancien serveur :
pg_ctl stop
Sur les systèmes qui lancent PostgreSQL™ au démarrage, il y a probablement un fichier de démarrage qui peut faire la même chose. Par exemple, sur un système Red Hat Linux, cette commande doit fonctionner :
/etc/rc.d/init.d/postgresql stop
En cas de restauration d'une sauvegarde, renommer ou supprimer l'ancien répertoire d'installation. Il est préférable de renommer le répertoire plutôt que de le supprimer, parce qu'en cas de problème, on peut avoir besoin d'y revenir. Le répertoire peut prendre beaucoup d'espace disque. Pour renommer le répertoire, utiliser une commande comme :
mv /usr/local/pgsql /usr/local/pgsql.old
Installer la nouvelle version de PostgreSQL™ comme indiquée dans la prochaine section Section 15.5, « Procédure d'installation ».
Créer un nouveau cluster de bases de données. Ces commandes doivent être exécutées sous le compte superutilisateur initial (qui existe déjà dans le cas d'une mise à jour).
/usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data
Restaurer le pg_hba.conf précédent et toutes les modifications de postgresql.conf.
Lancer le serveur de bases de données, toujours à partir du compte superutilisateur :
/usr/local/pgsql/bin/postgres -D /usr/local/pgsql/data
Enfin, restaurer les données à partir de la sauvegarde avec :
/usr/local/pgsql/bin/psql -d postgres -f outputfile
en utilisant le nouveau psql.
Des informations supplémentaires sont disponibles dans la documentation Section 24.5, « Migration entre versions ». Cette documentation contient notmamment des instructions sur la manière d'exécuter les deux versions en parallèle.