Mise à jour de PostgreSQL 15

Mise à niveau sur ARM (aarch64) avec une locale non par défaut

J’ai passé un peu de temps à corriger une mise à niveau défectueuse sur un serveur unique avec deux conteneurs.

  1. Son CPU est ARM
  2. Discourse était configuré avec la locale en_UK.UTF-8

Pas à pas, j’ai découvert que :

  1. tianon/postgres-upgrade:13-to-15 ne fonctionne pas sur ARM
  2. La configuration de la locale est stockée dans share/${CONTAINER}/postgres_data/postgresql.conf

J’ai commencé par commenter la partie env: du conteneur de données, pour m’assurer qu’il utilise les locales par défaut.

Ainsi, pour sortir du pétrin de la mise à niveau, j’ai pris une mesure dangereuse, en supposant que les différences de collation entre en_GB et en_US étaient négligeables, et j’ai impitoyablement mis à jour tout le cluster vers en_US :

UPDATE pg_database SET datctype='en_US.UTF-8', datcollate='en_US.UTF-8';

Je ne suis pas sûr que cette étape soit nécessaire, votre expérience peut varier (YMMV). Je la laisse ici pour que d’autres, plus compétents, puissent commenter, et je ne la recommande absolument pas pour des langues différentes !

Ensuite, j’ai remplacé la locale dans postgresql.conf :

sed -i -e 's/en_GB/en_US/g' shared/data/postgres_data/postgresql.conf
sudo -H -u discourse ./launcher rebuild data
...
UPGRADE OF POSTGRES COMPLETE

:tada:

Ne pensez pas que ce fut facile : je ne mentionne pas le long chemin d’exploration des options, surtout qu’au moment où je suis intervenu, l’interface d’administration était indisponible, et la dernière sauvegarde datait de 6 jours. J’ai bricoler avant de pouvoir obtenir une résolution appropriée – ou du moins, fonctionnelle.

J’espère que cela fera gagner du temps à certaines personnes.

5 « J'aime »