Outils personnels

Mise à jour PostgreSQL 8.1 en 8.4 - 9.0

De wikiGite

Sauvegarde des bases existantes

Sauvegarder les bases, si nécessaire (sinon, supprimer purement et simplement le répertoire /var/lib/pgsql/data, il sera recréé à l'init)

Les "globales" d'abord :

mkdir /pgbak
chown postgres:postgres /pgbak/
su - postgres
pg_dumpall --globals-only > /pgbak/globals.sql 
pg_dump --create --oids --format=c --verbose --file=/pgbak/dbX dbX
exit

Et sauvegarder les bases à froid (éteintes) :

/etc/init.d/postgresql stop
mv /var/lib/pgsql/data /pgbak

PostgreSQL 8.4

Mettre à jour :

yum remove postgresql
yum install postgresql84 postgresql84-server

Réinitialiser les bases système :

/etc/init.d/postgresql initdb

Restorer les fichiers de configuration à partir de /pgback/*.conf, faire les modification nécessaires (dans le pg_hba.conf notamment, des oprions ont changé : sameuser n'existe plus, remplacer password par md5).

Eventuellement :

chkconfig --level 35 postgresql on

Lancer postgresql

/etc/init.d/postgresql start

Restorer les rôles, et les bases de données :

su - postgres
psql -f /pgbak/globals.sql
pg_restore --create -d postgres /pgbak/dbX
exit

PostgresSQL 9

Si PostgreSQL8 était déjà installé il faut l'avoir désinstallé avant (avec sauvegardes des bases) :

yum remove postgresql

ou

yum remove postgresql84

Installer le repository PostgreSQL conrrespondant à la version voulue (http://www.pgrpms.org/howtoyum.php) :

wget http://www.pgrpms.org/reporpms/9.0/pgdg-centos-9.0-2.noarch.rpm

Désactiver le repo par défaut (enable=0 dans /etc/yum.repos.d/pgdg-90-centos.repo), puis :

yum --enablerepo=pgdg90 install postgresql90 postgresql90-server

Initialiser la base de données

/etc/init.d/postgresql-9.0 initdb

Les bases sont désormais dans /var/lib/pgsql/9.0/data

/etc/init.d/postgresql-9.0 start

Et restorer les bases :

su - postgres
psql -f /pgbak/globals.sql
pg_restore --create -d postgres /pgbak/dbX