Mise à niveau échouée : la version 13 de PostgreSQL ... n'est pas compatible avec ... la version 10.12

J’ai un petit forum, themooster.net, basé sur Discourse, que je n’avais pas mis à jour depuis quelques mois.

J’ai cliqué sur « Mettre à jour » dans la recommandation « Admin » pour effectuer la mise à niveau, et le système m’a indiqué que je devais procéder à la mise à niveau depuis l’invite de commande, en me donnant trois lignes à exécuter :

    cd /var/discourse
    git pull
    ./launcher rebuild app

J’ai exécuté ces trois commandes. La commande « rebuild app » a échoué initialement car je n’avais pas 5 Go d’espace libre sur ma petite machine Linode. J’ai donc ajouté de l’espace disque, et « rebuild app » semblait s’être terminé correctement.

Mais le site ne s’est pas relancé.

J’ai fait quelques vérifications, redémarré la machine, mais rien n’y fait. J’ai continué à chercher un peu plus.

Il semble que le frontend nginx se lance correctement, mais lorsque j’essaie d’accéder à mon forum via le web, comme un utilisateur normal, je reçois une erreur « 502 Bad Gateway » de la part du frontend nginx.

Le fichier « /var/discourse/shared/standalone/log/var-log/postgres/current » est rempli d’erreurs telles que :

2021-04-17 13:54:37.785 UTC [7095] FATAL: database files are incompatible with server
2021-04-17 13:54:37.785 UTC [7095] DETAIL: The data directory was initialized by PostgreSQL version 13, which is not compatible with this version 10.12 (Debian 10.12-2.pgdg100+1).

J’ai de bonnes sauvegardes du forum dans mon répertoire :
/var/discourse/shared/standalone/backups/default

Que dois-je faire maintenant ?

Voir Mise à jour PostgreSQL 13

Je vais consulter votre lien PostgreSQL 13 maintenant — merci.

Y a-t-il un moyen que j’aurais dû ou pu savoir de cette complication, sans être un administrateur à temps plein suivant constamment l’activité des technologies clés (PostgreSQL, Ruby, Linux, …) derrière Discourse ?

Si oui, alors les trois lignes d’instruction (cd /var/discourse; …) pourraient-elles inclure une autre ligne : « Attention : consultez d’abord ici pour d’autres informations qui pourraient s’appliquer » ?

Si non, alors Discourse devrait être plus transparent sur le fait qu’il n’est pas bien adapté à un usage occasionnel.

Je vais essayer de relire la page de mise à jour de PostgreSQL 13 que vous avez aimablement liée, encore quelques fois.

Mais, lors des premières lectures… je suis à moitié complètement perdu. Je n’ai aucune idée de quelles sections de cette page pourraient s’appliquer à ma situation (si tant est qu’il y en ait).

Par exemple, cette page de mise à jour de PostgreSQL 13 se concentre (ce qui est raisonnable, je suppose) sur la mise à niveau de PostgreSQL 12 vers 13. Mon message d’erreur :

Le répertoire de données a été initialisé par la version 13 de PostgreSQL, qui n’est pas compatible avec cette version 10.12 (Debian 10.12-2.pgdg100+1).

parle de la version 10.12… s’agit-il de PostgreSQL 10 ou de PostgreSQL 12 (je lirais normalement « 10.12 » comme étant principalement 10, et non 12).

Aha - mon fichier :

/var/discourse/shared/standalone/postgres_data_old/PG_VERSION

contient la valeur « 10 ».

Ainsi, le lien vers PostgreSQL 13 mentionné ci-dessus, dans la mesure où il s’applique à une mise à niveau de 12 vers 13, n’est pas nécessairement pertinent, du moins à ma connaissance (qui est très limitée).

J’ai vraiment un mauvais pressentiment là-dessus… comme si j’essayais de réparer des munitions militaires en direct, dans une grotte sombre, sans instructions, sans formation, et sans même être sûr du type de munitions sur lesquelles je travaille.

Ce commentaire, sur lequel je suis tombé par hasard, juste comme ça :

https://meta.discourse.org/t/how-do-i-manually-update-discourse-and-docker-image-to-latest/23325/238?u=thepythoniccow

« Vous devriez reconstruire à nouveau. Je parie que vous avez ignoré un message concernant la mise à niveau de PostgreSQL. »

M’a fait penser que je devrais essayer à nouveau la commande « cd /var/discourse; git pull; ./launcher rebuild app »… apparemment, ce « rebuild » peut être exécuté plusieurs fois.

J’ai capturé la sortie cette fois. Je GARANTIS cependant avoir ignoré la plupart des messages dans la sortie. Il y a 2020 lignes de sortie provenant uniquement de la commande « ./launcher rebuild app ». Il me faudrait des mois pour apprendre quels programmes s’exécutent et ce que signifient leurs messages de sortie. Il n’existe aucun moyen pratique pour moi de savoir si j’ignore quelque chose de critique dans cette sortie.

Cependant …

Cela a fonctionné !!

Mon site est revenu en ligne, exécutant la version actuelle du logiciel.

La leçon du jour : Si la commande « ./launcher rebuild app » échoue à fournir un site fonctionnel, réessayez-la.

2 « J'aime »

Ah. Désolé, je n’ai pas pensé à vous dire ce que j’ai dit à cet homme !

:tada: Super ! Je suis ravi que vous y soyez arrivé !

Oui. C’est peut-être la seule autre chose que vous ayez besoin de savoir. :slight_smile:

Content de vous voir de retour en ligne !

3 « J'aime »

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.