Migration postgresql 11 to 13 problem

:uk:/:us:

My YunoHost server

Hardware: VPS bought online
YunoHost version: 11.0.9.15
I have access to my server : Through SSH and through the webadmin
Are you in a special context or did you perform some particular tweaking on your YunoHost instance ? : no

Description of my issue

Hello, I started the migration of Yunohost to version 11.
The first part seems to have gone smoothly, outside of Discourse which is no longer accessible. I will go into more detail after the first issue is resolved.
Then via the webadmin I started the migration from postgresql 11 to 13. But the process got stuck on the way. I don’t understand how to fix it.
Here is the Yunopaste: https://paste.yunohost.org/raw/ekozepixop

I don’t have access to the status of services via the webadmin either.

I saw this solution on the forum: Migration bullseye - Postresql 11 to 13 failed - #6 by rodinux

Do you have feedback with this method? Is there another way? I have Mobilizon, but if I have to delete it, it’s not important, but I have to keep my other applications: Discourse, Nextcloud, Etherpad in particular.


:fr:

Mon serveur YunoHost

Matériel: VPS acheté en ligne
Version de YunoHost: 11.0.9.15
J’ai accès à mon serveur : En SSH et Par la webadmin
Êtes-vous dans un contexte particulier ou avez-vous effectué des modificiations particulières sur votre instance ? : non

Description du problème

Bonjour, j’ai démarré la migration de Yunohost vers la version 11.
La première partie semble s’être déroulée sans problème, en dehors de Discourse qui n’est plus accessible. J’approfondirai la question une fois le premier problème réglé.
Puis via la webadmin j’ai lancé la migration de postgresql 11 vers 13. Mais le déroulement s’est bloqué en chemin. Je ne comprends pas comment le régler.
Voici le Yunopaste :

Je n’ai pas accès à l’état des services via la webadmin non plus.

J’ai vu cette solution sur le forum : Migration bullseye - Postresql 11 to 13 failed - #6 by rodinux

Avez-vous des retours avec cette méthode ? Y a t il un autre moyen ? J’ai Mobilizon, mais si je dois le supprimer, cela n’est pas important, mais je dois conserver mes autres applications : Discourse, Nextcloud, Etherpad notamment.

Salut,
pour Nextcloud Etherpad, ces applications n’utilise pas de base de données pg, par contre Discourse lui utilise bien une bd pg.
Par contre ceci n’a pas été ma solution, pour Mobilizon, la solution a été plus radicale: Comment restaurer ancienne database de Mobilizon? - #3 by rodinux

Mais pour Discourse, il faut bien faire aussi la sauvegarde et ça doit fonctionner: YunoHost 11.0 (Bullseye) release / Sortie de YunoHost 11.0 (Bullseye) - #267 by chmeyer

D’accord, juste pour être sûr, j’ai fais une sauvegarde avant la migration. Je dois restaurer celle-ci ?
Ou je refais une sauvegarde maintenant avant de faire ce que tu proposes ci-dessous ?

Et si je comprends bien, il faudrait le faire pour Mobilizon et Discourse dans mon cas.

Ça ne semble pas être le plus recommandé, si ? (cf la réponse d’Aleks).

Oui, c’est ce que j’ai fait.

pour Discourse je ne suis pas sûr. Apparement un forced-upgrade peut suffire. Dans ton lien c’est encore autre chose, il parle d’avoir supprimer les dépendances des apps ynh-deps et on lui déconseille…

Ici un sujet pour Discourse: Upgrade failed - when i try to update in 11 - #4 by Aleks
Quoi qu’il en soit, une sauvegarde aussi des bases de données avec un
pg_dumpall > outputfile

Naively I would retry running this manually:

LC_ALL=C pg_upgradecluster -m upgrade 11 main

If this works, you can probably then skip the migration with

yunohost tools migrations run 0023_postgresql_11_to_13 --skip

It gave me this :

LC_ALL=C pg_upgradecluster -m upgrade 11 main
Restarting old cluster with restricted connections…
Notice: extra pg_ctl/postgres options given, bypassing systemctl for start operation
Stopping old cluster…
Creating new PostgreSQL cluster 13/main …
/usr/lib/postgresql/13/bin/initdb -D /var/lib/postgresql/13/main --auth-local peer --auth-host md5 --encoding UTF8 --lc-collate en_US.UTF-8 --lc-ctype en_US.UTF-8
The files belonging to this database system will be owned by user “postgres”.
This user must also own the server process.

The database cluster will be initialized with locale “en_US.UTF-8”.
The default text search configuration will be set to “english”.

Data page checksums are disabled.

fixing permissions on existing directory /var/lib/postgresql/13/main … ok
creating subdirectories … ok
selecting dynamic shared memory implementation … posix
selecting default max_connections … 100
selecting default shared_buffers … 128MB
selecting default time zone … Etc/UTC
creating configuration files … ok
running bootstrap script … ok
performing post-bootstrap initialization … ok
syncing data to disk … ok

Success. You can now start the database server using:

pg_ctlcluster 13 main start

Ver Cluster Port Status Owner Data directory Log file
13 main 5433 down postgres /var/lib/postgresql/13/main /var/log/postgresql/postgresql-13-main.log

/usr/lib/postgresql/13/bin/pg_upgrade -b /usr/lib/postgresql/11/bin -B /usr/lib/postgresql/13/bin -p 5432 -P 5433 -d /etc/postgresql/11/main -D /etc/postgresql/13/main
Finding the real data directory for the source cluster ok
Finding the real data directory for the target cluster ok
Performing Consistency Checks

Checking cluster versions ok
Checking database user is the install user ok
Checking database connection settings ok
Checking for prepared transactions ok
Checking for system-defined composite types in user tables ok
Checking for reg* data types in user tables ok
Checking for contrib/isn with bigint-passing mismatch ok
Checking for tables WITH OIDS ok
Checking for invalid “sql_identifier” user columns ok
Creating dump of global objects ok
Creating dump of database schemas
ok
Checking for presence of required libraries fatal

Your installation references loadable libraries that are missing from the
new installation. You can add these libraries to the new installation,
or remove the functions using them from the old installation. A list of
problem libraries is in the file:
loadable_libraries.txt

Failure, exiting
Error: pg_upgrade run failed. Logfiles are in /var/log/postgresql/pg_upgradecluster-11-13-main.22im
Error during cluster dumping, removing new cluster
Cluster is not running.
Error: could not stop old cluster, please do that manually

In the logfile for the loadable libraries I get this :

could not load library “$libdir/postgis-2.5”: ERROR: could not access file “$libdir/postgis-2.5”: No such file or directory
In database: mobilizon
could not load library “$libdir/rtpostgis-2.5”: ERROR: could not access file “$libdir/rtpostgis-2.5”: No such file or directory
In database: mobilizon

So I uninstalled Mobilizon uisnig ‘yunohost app remove mobilizon’.

Then retried

But got the same error :

could not load library “$libdir/postgis-2.5”: ERROR: could not access file “$libdir/postgis-2.5”: No such file or directory
In database: mobilizon
could not load library “$libdir/rtpostgis-2.5”: ERROR: could not access file “$libdir/rtpostgis-2.5”: No such file or directory
In database: mobilizon

At this point, I’m not sure what’s best to do ? My main goal is to complete the migration, even if it means re-installing mobilizon later (I haven’t actually used it yet).

The problem with mobilizon is a dependencies with postgis, with bullseye are postgresql-13-postgis-3 and postgresql-13-postgis-3-scripts but with buster were postgresql-11-postgis-2.5 and postgresql-11-postgis-2.5-scripts
You must erase the mobilizon database first. You have remove Mobilizon, but the database mobilizon is steel here, drop it.
Then you woud be ready to upgrade postgresql.
And restoring the backup Mobilizon will also found the good dependencies for postgis…

1 Like

en root:

$ su - postgres
postgres@machine:~$ psql
postgres=# DROP DATABASE [IF EXISTS] mobilizon;

I have issues with the command line you suggest.

I get this :

postgres@verycoolname:~$ DROP DATABASE [IF EXISTS] mobilizon;
-bash: DROP: command not found

I didn’t find an answer about this problem.

The postgres service hasn’t work for 53 years

The log says that the PostgreSQL Cluster 13-main started and stopped (I tried to re-launch it) : hastebin

How can I solve this one ?

And before doing anything stupid, if I restore my yunohost’s backup I made just before the migration. And I go from there, I uninstall mobilizon and launch again the migration. Do I risk to break anything ?

Zut c’est complexe…

Peut-être si tu veux faire ainsi, sauvegarde avant des databases ou une par une…

$ pg_dump -Fc mobilizon > mobilizon.sql

Peut-être qu’il faut un nom d’utilisateur ?

$ pg_dump -U mobilizon -Fc mobilizon > mobilizon.sql (pareil pour discourse ?)

Pour voir les databases:

postgres@verycoolname:~$ psql -l

Sauvegarde de toutes les db
$ pg_dumpall > backup.sql

autres sources : https://www.guru99.com/postgresql-drop-database.htm
ou
PostgreSQL DROP DATABASE - Delete PostgreSQL Databases

la commande n’a pas abouti parce que j’imagine que comme le service postgres est cassé et pas démarré, lorsqu’il se connecte en utilisateur postgres ça arrive sur un shell classique au lieu d’entrer directement dans le processus d’accès à la base.

Les commandes pg_dump ou psql ne fonctionneront pas non plus.

De mon côté, j’ai aussi un problème similaire lors de la migration.

Si je tape

LC_ALL=C pg_upgradecluster -m upgrade 11 main

j’ai cette erreur :

Error: target cluster 14/main already exists

j’ai suivi les conseils ici :

https://wiki.rockstable.it/PostgreSQL

y’a une commande pg_dropcluster qui m’a permis de débloquer ça. À utiliser avec prudence quand même… (mais vous sauvegardez vos bases régulièrement par ailleurs ?)

à la fin j’ai eu mon

Success! Migration 0023_postgresql_11_to_13 completed

en revanche comme dans le cas de @Kapu06 j’ai cette erreur de service inactif depuis 53 ans.

Cela m’indique ça en ligne de commande :

sudo systemctl status postgresql.service 
● postgresql.service - PostgreSQL RDBMS
     Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor preset: enabled)
     Active: active (exited) since Fri 2022-10-07 15:02:27 CEST; 2min 18s ago
    Process: 808 ExecStart=/bin/true (code=exited, status=0/SUCCESS)
   Main PID: 808 (code=exited, status=0/SUCCESS)
        CPU: 1ms

Oct 07 15:02:27 #### systemd[1]: Starting PostgreSQL RDBMS...
Oct 07 15:02:27 #### systemd[1]: Finished PostgreSQL RDBMS.

et journalctl ne donne pas plus d’indication

Oct 07 15:01:30 #### systemd[1]: Starting PostgreSQL RDBMS...
Oct 07 15:01:30 #### systemd[1]: Finished PostgreSQL RDBMS.

je ne comprends pas trop, les erreurs semblent concerner postgresql 13 et pourtant les paquets qui sont bloqués (par exemple codimd) le sont à cause de dépendance à postgresql 14…

(edit) au final j’ai pu passer le problème en purgeant postgresql et en réinstallant tout.

Comment as-tu fais pour tout purger et ré-installer ? Est-ce qu’il y a un risque de perdre les données liées au forum Discourse également ?

tu peux suivre les commandes de @rodinux données en lien plus haut :

(je n’ai pas fait de rm mais des mv pour éviter de tout effacer).

Oui, il y a un risque de perdre les bdd. Si tu as des sauvegardes de ton forum, tu pourras récupérer la base depuis la sauvegarde, puis purger, réinstaller, et réinjecter la base. Il faudra être sûr de ton coup quand même… vérifie bien tout avant de purger !

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