PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 04/09/2024 13:59:44

albourg
Membre

in-place upgrade: pg_upgrade --check sur un serveur qui tourne

Bonjour,
Je vais upgrader un postgresql 10 vers 15 sous centos 7 x86_64.
J'aurais voulu tester avant de lancer l'upgrade durant un downtime.

J'ai lancé

/usr/pgsql-15/bin/pg_upgrade -b /usr/pgsql-10/bin/ -B /usr/pgsql-15/bin -d  /var/lib/pgsql/10/data  -D /mnt/pgdata/pgdirbc15/ --link -c

Ca plante, le log dit:

-----------------------------------------------------------------
  pg_upgrade run on Wed Sep  4 09:08:31 2024
-----------------------------------------------------------------

command: "/usr/pgsql-10/bin/pg_ctl" -w -l "/mnt/pgdata/pgdirbc15/pg_upgrade_output.d/20240904T090831.750/log/pg_upgrade_server.log" -D "/var/lib/pgsql/10/data" -o "-p 50432 -b  -c listen_addresses='' -c unix_socket_permissions=0700 -c unix_socket_directories='/var/lib/pgsql'" start >> "/mnt/pgdata/pgdirbc15/pg_upgrade_output.d/20240904T090831.750/log/pg_upgrade_server.log" 2>&1
waiting for server to start....2024-09-04 12:08:32.179 CEST [12197] FATAL:  lock file "postmaster.pid" already exists
2024-09-04 12:08:32.179 CEST [12197] HINT:  Is another postmaster (PID 25407) running in data directory "/mnt/pgdata/pgdir"?
 stopped waiting
pg_ctl: could not start server
Examine the log output.

Donc il se plaint que l'ancien tourne (c'est la prod, je ne peux pas l'arrêter comme je veux).

Pourtant, la doc dit (https://www.postgresql.org/docs/15/pgupgrade.html)
You can use pg_upgrade --check to perform only the checks, even if the old server is still running.

Un moyen de contourner ce souci?

Merci

Hors ligne

#2 04/09/2024 16:32:24

ruizsebastien
Membre

Re : in-place upgrade: pg_upgrade --check sur un serveur qui tourne

Bonjour,

essayez en enlevant "--link"


Cordialement,

Sébastien.

Hors ligne

#3 04/09/2024 17:30:23

albourg
Membre

Re : in-place upgrade: pg_upgrade --check sur un serveur qui tourne

Même résultat

-----------------------------------------------------------------
  pg_upgrade run on Wed Sep  4 14:23:03 2024
-----------------------------------------------------------------

command: "/usr/pgsql-10/bin/pg_ctl" -w -l "/mnt/pgdata/pgdirbc15/pg_upgrade_output.d/20240904T142303.437/log/pg_upgrade_server.log" -D "/var/lib/pgsql/10/data" -o "-p 50432 -b  -c listen_addresses='' -c unix_socket_permissions=0700 -c unix_socket_directories='/var/lib/pgsql'" start >> "/mnt/pgdata/pgdirbc15/pg_upgrade_output.d/20240904T142303.437/log/pg_upgrade_server.log" 2>&1
waiting for server to start....2024-09-04 17:23:03.980 CEST [19033] FATAL:  lock file "postmaster.pid" already exists
2024-09-04 17:23:03.980 CEST [19033] HINT:  Is another postmaster (PID 25407) running in data directory "/mnt/pgdata/pgdir"?
 stopped waiting
pg_ctl: could not start server
Examine the log output.

Hors ligne

#4 04/09/2024 17:44:59

albourg
Membre

Re : in-place upgrade: pg_upgrade --check sur un serveur qui tourne

J'ai renvoyé un commentaire sur la page postgres pour signaler que l'ancien serveur doit apparemment être coupé.

Hors ligne

#5 05/09/2024 09:26:22

ruizsebastien
Membre

Re : in-place upgrade: pg_upgrade --check sur un serveur qui tourne

vous pouvez essayer en commençant la commande par :
/usr/pgsql-15/bin/pg_upgrade --check ....etc....
et en enlevant le -c d'origine


Cordialement,

Sébastien.

Hors ligne

#6 05/09/2024 11:05:45

albourg
Membre

Re : in-place upgrade: pg_upgrade --check sur un serveur qui tourne

aucun changement

Hors ligne

#7 05/09/2024 11:16:32

ruizsebastien
Membre

Re : in-place upgrade: pg_upgrade --check sur un serveur qui tourne

peut être un problème d'environnement ?
si vous faites :
wich initdb
ça doit vous renvoyer la version 15 de initdb


Cordialement,

Sébastien.

Hors ligne

#8 05/09/2024 11:27:23

albourg
Membre

Re : in-place upgrade: pg_upgrade --check sur un serveur qui tourne

initdb a été fait avec la version 15 avant de lancer pg_upgrade.
le postgres 15 peut être démarré/arrêté sans erreur, donc ce n'est pas ça.
pg_upgrade se plaint immédiatement que le 10 tourne.

Hors ligne

#9 05/09/2024 11:43:15

ruizsebastien
Membre

Re : in-place upgrade: pg_upgrade --check sur un serveur qui tourne

ouaip... dans tous les pg_upgrade que j'ai fait jusque là, les instances source et cible étaient arrêtées.
Y compris au moment du check.
Je ne l'ai jamais tenté avec l'instance à upgrader démarrée.
Du coup je ne savais pas que le check était sensible à ça.


Cordialement,

Sébastien.

Hors ligne

#10 09/09/2024 12:49:27

albourg
Membre

Re : in-place upgrade: pg_upgrade --check sur un serveur qui tourne

Pour ceux qui auraient le même souci, voilà la cause:
le dossier de config (contenant les fichier .conf comprenait aussi un fichier nommé PG_VERSION alors que les données sont dans un autre répertoire.
J'ai mis config et données dans le même dossier et c'est passé.

Hors ligne

Pied de page des forums