Vous n'êtes pas identifié(e).
Bonjour,
Je suis un debutant sur Postgresql. J'ai installe avec succes la version 9.5 sous Archlinux pour faire tourner un serveur nginx, php, postgresql. J'en suis pleinement satisfait. Malheureusement, la mise a jour vers la 9.6 a fait planter le service postgreqsl. Le message d'erreur est le suivant :
déc. 05 17:42:26 tonio-server postgres[22308]: An old version of the database format was found.
déc. 05 17:42:26 tonio-server postgres[22308]: See https://wiki.archlinux.org/index.php/Po … PostgreSQL
déc. 05 17:42:26 tonio-server systemd[1]: postgresql.service: Control process exited, code=exited status=1
déc. 05 17:42:26 tonio-server systemd[1]: Failed to start PostgreSQL database server.
-- Subject: L'unité (unit) postgresql.service a échoué
J'ai donc suivi le tuto donne en lien dans le message d'erreur, https://wiki.archlinux.org/index.php/Po … PostgreSQL. J'avoue que je suis perdu dans les instructions donnees. Je fais donc appel a la communaute pour m'aider dans la migration. Quelles sont les etapes a respecter ?
Merci par avance.
Antoine
Hors ligne
c'est bien cela. il faut lancer le script d'upgrade (après avoir migré votre configuration si vous aviez fait du paramétrage spécifique).
Cela va vous créer une nouvelle instance en 9.6 à la place de l'ancienne, et migrer les fichiers de données dedans. Ça devrait être très rapide
Marc.
Hors ligne
Merci pour cette reponse rapide. Je n'ai pas le script d'upgrade propose par le wiki. Quand bien meme je l'aurais je ne peux executer su postgres etant donne que la version installee est la 9.6 et elle plante. Je dois manquer une etape, c'est pour cela que je demande de l'aide.
Hors ligne
Je viens de le retester, la procédure fonctionne parfaitement.
Soit vous créez un script upgrade_pg.sh, et copiez dedans le contenu, soit vous positionnez en ligne de commande:
export FROM_VERSION=9.5
puis vous lancez les commandes une à une (à partir de la commande pacman)
Marc.
Hors ligne
Bon j'ai lance les commandes une a une. Je suis arrete sur la derniere ligne avec pg_upgrade car j'ai le message suivant : cannot write to log file pg_upgrade_internal.log
. Je ne sais pas ou pg_upgrade ecrit ses logs. Je suis donc bloque.
Hors ligne
Oups ! desole je n'avais pas vu le premier point de la section troubleshooting. Je peux executer le pg_upgrade mais il s'arrete avec le message suivant :
Performing Consistency Checks
-----------------------------
Checking cluster versions
could not open version file: /var/lib/postgres/data/PG_VERSION
Failure, exiting
J'ai bien un fichier PG_VERSION aussi je ne comprends pas pourquoi il ne peut pas l'ouvrir.
Hors ligne
Bon j'ai resolu le probleme PG_VERSION> Maintenant j'ai une erreur plus embetante :
[tonio@tonio-server global]$ pg_upgrade -b /opt/pgsql-${FROM_VERSION}/bin/ -B /usr/bin/ -d /var/lib/postgres/data-${FROM_VERSION} -D /var/lib/postgres/data
Performing Consistency Checks
-----------------------------
Checking cluster versions ok
pg_resetxlog: pg_control exists but is broken or unknown version; ignoring it
*failure*
Consult the last few lines of "pg_upgrade_server.log" for
the probable cause of the failure.
connection to database failed: could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/var/lib/postgres/data-9.5/global/.s.PGSQL.50432"?
could not connect to old postmaster started with the command:
"/opt/pgsql-9.5/bin/pg_ctl" -w -l "pg_upgrade_server.log" -D "/var/lib/postgres/data-9.5" -o "-p 50432 -b -c listen_addresses='' -c unix_socket_permissions=0700 -c unix_socket_directories='/var/lib/postgres/data-9.5/global'" start
Failure, exiting
La log ne me donne rien. Je ne comprend pas pourquoi il n'arrive pas a lancer le postmaster.
Hors ligne
Très étrange, ça laisse entendre que pg_upgrade n'arrive pas à reconnaître le fichier de contrôle de l'ancienne instance.
Qu'y a t'il dans le fichier pg_upgrade_server.log ?
Marc.
Hors ligne
C'est cela le plus etrange, il n'y a rien a part la date et heure de l'execution du programme. Je ne peux donc pas pointer l'erreur.
Hors ligne
Essayez de lancer la commande pg_ctl du bas de votre message et regardez ce qu'elle répond.
Marc.
Hors ligne
Quand j'execute la commande, voila ce qui est repondu :
[tonio@tonio-server tmp]$ "/opt/pgsql-9.5/bin/pg_ctl" -w -l "pg_upgrade_server.log" -D "/var/lib/postgres/data-9.5" -o "-p 50432 -b -c listen_addresses='' -c unix_socket_permissions=0700 -c unix_socket_directories='/var/lib/postgres/data-9.5/global'" start
waiting for server to start.... stopped waiting
pg_ctl: could not start server
Examine the log output.
Quand j'examine la log :
LOG: could not open configuration file "/var/lib/postgres/data-9.5/postgresql.conf": Permission non accordée
FATAL: configuration file "/var/lib/postgres/data-9.5/postgresql.conf" contains errors
J'ai donc fait un chmod 700 sur le fichier mais j'ai toujours la meme erreur.
Hors ligne
Dans ce cas, c'est que le propriétaire du fichier n'est pas le bon.
Guillaume.
Hors ligne
J'aurais du y penser. Bref j'ai change le proprietaire du fichier. Voila la log :
LOG: skipping missing configuration file "/var/lib/postgres/data-9.5/postgresql.auto.conf"
FATAL: data directory "/var/lib/postgres/data-9.5" has group or world access
DETAIL: Permissions should be u=rwx (0700).
Je n'ai pas modifie les permissions. Et maintenant on parle d'un fichier postgresql.auto.conf...
Hors ligne
C'est, comme cela semble logique, la ligne FATAL qui est importante. Et qui vous dit que les droits ne sont pas bons. Il faut que les droits de /var/lib/postgres/data-9.5 soient 0700.
De façon plus générale, je pense que vous devriez reconsidérer votre choix d'archlinux: la distribution s'adresse à des utilisateurs expérimentés. Mon but n'est pas d'être vexant, simplement, vous allez avoir de nombreuses galères similaires avec la distribution si vous n'êtes pas déjà très à l'aise avec les systèmes Unix: la plupart des mises à jour majeures de logiciels se passent de cette façon, voire pire (la migration vers python3 ou vers systemd ont été complexes par exemple).
Marc.
Hors ligne
Je comprends. Maintenant 2 points :
- j'utilise Archlinux car c'est la seule distribution qui fonctionne sur mon serveur (Ubuntu et Debian sont trop lourdes, elles ont plante a l'installation)
- j'ai une serveur nginx, php qui est operationnel
Je devrais peut etre changer de SGBD Mysql (qui etait mon premier choix) En tout cas je vous remercie pour votre aide patiente et precieuse. Desole de vous avoir deranger pour des choses aussi triviales.
Hors ligne