Ce post marque, je l'espère, le vrai début d'une série sur la mise à jour Etch vers Lenny (même s'il y a eu un faux départ avec l'article sur suphp). Il relate les péripéties rencontrées (ou pas) lors de la mise à jour de diverses applications.

C'est donc PostgreSQL qui ouvre le bal et comme PostgreSQL tout seul ne permettrait pas de remplir suffisamment un article on va mettre à jour en parallèle Slony I.

Lenny marque l'avènement de PostgreSQL 8.3 (Etch proposait la 7.4 et la 8.1), Slony, de son côté, passe de la version 1.2.1 à la 1.2.15. Chacun des packages a une procédure de mise à jour, malheureusement, il semble qu'il y ait quelques difficultés à mettre à jour un PostgreSQL contenant des bases gérées par Slony (l'upgrade_cluster indique quelques erreurs, je n'ai pas pris le temps de les décortiquer, mais ça concerne le schéma Slony). De même, je n'ai pas testé, mais je ne pense pas que mettre à jour Slony puis faire la mise à jour PostgreSQL apporte grand chose.

Voici donc la solution que j'ai appliqué (ce n'est peut être pas la meilleure mais elle marche). Attention, il est plus que conseillé de mettre tout le cluster (au sens Slony) à jour en même temps pour avoir des versions de PostgreSQL, et surtout de Slony, cohérentes.

  1. On arrête la réplication slony (/etc/init.d/slony1 stop si vous avez configuré les choses correctement) sur le maître et le ou les esclave(s) ;
  2. On supprime les éléments liés à Slony sur les différentes bases :
    • SELECT [cluster].uninstallnode()
    • DROP CLUSTER [cluster] CASCADE
  3. On met à jour PostgreSQL (sudo aptitude install postgresql 8.3; pg_dropcluster 8.3 main --stop; pg_upgradecluster -v 8.3 8.1 main). Normalement, tout se passe sans problème (on me souffle dans l'oreillette que 7.4 -> 8.x c'est pas la même chose, en particulier au niveau charsets) ;
  4. On remet en place la réplication Slony (un article détaillé est en préparation).

Pensez à dire à vos utilisateurs de ne pas modifier la base maître pendant que vous jouez (si vous ne leur faites pas confiance, et vous avez raison, désactivez leur les droits en écriture).

C'était pas si compliqué hein ?