Migrer postgresql de 8.1 en 8.3 sous Debian Lenny

Logo de postgresqlLors de la mise à jour de la version etch à la version lenny de debian, les paquets postgres passent de la version 8.1 (ou 8.2) en version 8.3. Pas de soucis, debian ne désinstalle pas les paquets 8.1. Cependant, il vous faudra passer en version 8.3 si vous souhaitez continuer à bénéficier des mises à jour de sécurité ou vous y êtes peut être contraint car certains paquets sont dépendants de la dernière version.

Pas de panique, postgresql fournit tous les outils pour faciliter la migration. Tout d’abord, je ne peut que vous conseiller vivement de faire une sauvegarde des données de l’ancienne version. Vous pouvez le faire avec les commandes suivantes :

/etc/init.d/postgresql-8.1 stop
tar -zcvf maSauvegardePostgresql /var/lib/postgresql/8.1 /etc/postgresql/8.1 \
/etc/postgresql-common

Avant de faire les manipulations, assurez-vous que les 2 versions du serveur postgresql tournent et que vous avez suffisament de place libre pour le répertoire /var/lib/postgresql (il vous faudra avoir autant de place libre que la place utilisée par le répertoire var/lib/postgresql/8.1 car on va dupliquer les données).

La première commande va supprimer les données de la version 8.3 et l’arrêter :

pg_dropcluster 8.3 main --stop

On va ensuite lancer la migration des données, soyez patients :

pg_upgradecluster -v 8.3 8.1 main

Connectez-vous en tant qu’utilisateur postgres et vérifiez que vous retrouvez vos petits :

machine:~# su - postgres
postgres@machine:~$  /usr/lib/postgresql/8.3/bin/psql
Welcome to psql 8.3.6, the PostgreSQL interactive terminal.

Type:  \copyright for distribution terms
\h for help with SQL commands
\? for help with psql commands
\g or terminate with semicolon to execute query
\q to quit

postgres=# \l
List of databases
Name    |  Owner   | Encoding
-----------+----------+-----------
mabase    | postgres | SQL_ASCII
postgres  | postgres | SQL_ASCII
template0 | postgres | SQL_ASCII
template1 | postgres | SQL_ASCII
(4 rows)

Une fois que vous aurez fait toutes les vérifications nécessaires, vous pourrez quand vous le voudrez supprimer les données de l’ancienne version.

pg_dropcluster 8.1 main

Puis vous pourrez supprimer les paquets de l’ancienne version :

apt-get remove postgresql-8.1 postgresql-client-8.1

Voilà, vous avez migré vos données en quelques minutes.

3 Commentaires »

Flux RSS des commentaires de cet article. Rétrolien URI

  1. Pour la sauvegarde par tar, il faut d’abord arrêter l’instance 8.1 (=sauvegarde à froid) sinon la sauvegarde sera inconsistante et potentiellement inutilisable.
    Alternativement, une autre option sans arrêter l’instance est d’utiliser pg_dumpall (=sauvegarde à chaud)

    Commentaire par daniel — 24 mars 2009 #

  2. En effet, l’arrêt est totalement nécessaire ! Merci de m’avoir corrigé (j’espère que personne n’a eu de problèmes ! ). J’ai modifié l’article en le prenant en compte. Je dois avouer que j’ai fait la migration sans filet sur une base que je pouvais me permettre de perdre.

    Le pg_dumpall est aussi une bonne méthode, si je lui ai préféré le tar c’est pour avoir une copie bas-niveau des données ET des fichiers de configuration.

    D’ailleurs en méthode de sauvegarde simple à utiliser tous les jours le pg_dump/pg_dumpall est à préférer. Les sauvegardes produites sont plus facilement réutilisables.

    Commentaire par sylvain — 24 mars 2009 #

  3. Merci :)

    Commentaire par arnaud — 29 septembre 2009 #

Laisser un commentaire

XHTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Propulsé par WordPress et le thème GimpStyle crée par Horacio Bella. Traduction (niss.fr).
Flux RSS des Articles et des commentaires. Valide XHTML et CSS.