Vous n'êtes pas identifié(e).
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
Bonjour,
essayez en enlevant "--link"
Cordialement,
Sébastien.
Hors ligne
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
J'ai renvoyé un commentaire sur la page postgres pour signaler que l'ancien serveur doit apparemment être coupé.
Hors ligne
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
aucun changement
Hors ligne
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
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
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
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