pg_createcluster

Installation de PostgreSQL sur les différentes distributions Linux avec apt-get (Debian & distributions similaires), yum (Red Hat & distributions similaires) etc.
Répondre
jpcarayo
Messages : 5
Enregistré le : ven. 11 août 2017 19:58

pg_createcluster

Message par jpcarayo » ven. 11 août 2017 20:00

Bonjour,

Version: PostgreSQL 10beta3 on x86_64-pc-linux-gnu, compiled by gcc (Debian 7.1.0-13) 7.1.0, 64-bit
Je crée un cluster par la commande :
pg_createcluster \
pg_createcluster \
-d /PG_02_01/data \
--locale fr_FR.iso885915@euro \
--lc-collate C \
--lc-ctype C \
-e LATIN9 \
10 MONCLUSTER \
-- --waldir=/PG_03_01 \
--data-checksums

Jusque-là tout va bien. Le message suivant est affiché :

Succès. Vous pouvez maintenant lancer le serveur de bases de données en utilisant :
/usr/lib/postgresql/10/bin/pg_ctl -D /PG_02_01/data -l fichier de trace start
Warning: systemd does not know about the new cluster yet. Operations like "service postgresql start" will not handle it. To fix, run:
sudo systemctl daemon-reload
Ver Cluster Port Status Owner Data directory Log file
10 MONCLUSTER 5432 down postgres /PG_02_01/data /var/log/postgresql/postgresql-10-MONCLUSTER.log

Par contre, si je fais comme le message me le suggère :
/usr/lib/postgresql/10/bin/pg_ctl -D /PG_02_01/data start
J'ai le message d'erreur :
en attente du démarrage du serveur....postgres : n'a pas pu accéder au fichier de configuration « /PG_02_01/data/postgresql.conf » : Aucun fichier ou dossier de ce type
attente arrêtée
pg_ctl : n'a pas pu démarrer le serveur
Examinez le journal applicatif.

Ce qui me parait s'expliquer par le fait que sous Debian le fichier postgresql.conf est sous :
:~$ ls /etc/postgresql/10/MONCLUSTER/postgresql.conf
/etc/postgresql/10/MONCLUSTER/postgresql.conf

Mon instance démarre correctement avec :
/usr/lib/postgresql/10/bin/pg_ctl -D /etc/postgresql/10/MONCLUSTER/ start
en attente du démarrage du serveur....2017-08-11 19:34:13.106 CEST [11868] LOG: en écoute sur IPv6, adresse « ::1 », port 5432
2017-08-11 19:34:13.106 CEST [11868] LOG: en écoute sur IPv4, adresse « 127.0.0.1 », port 5432
2017-08-11 19:34:13.108 CEST [11868] LOG: écoute sur la socket Unix « /var/run/postgresql/.s.PGSQL.5432 »
2017-08-11 19:34:13.122 CEST [11869] LOG: le système de bases de données a été arrêté à 2017-08-11 19:32:16 CEST
2017-08-11 19:34:13.128 CEST [11868] LOG: le système de bases de données est prêt pour accepter les connexions
effectué
serveur démarré

Ai-je fait une erreur quelque part ? Ou bien, faut-il faire modifier le message affiché par pg_createcluster ?

Merci beaucoup pour votre aide.
JP

Phil
Administrateur du site
Messages : 249
Enregistré le : mar. 1 sept. 2015 00:38
Localisation : France
Contact :

Re: pg_createcluster

Message par Phil » mar. 15 août 2017 12:25

Bonjour Jean-Pierre,

Aucune erreur dans l'utilisation de pg_createcluster, c'est bien le message qui est erroné.
Ces informations récapitulatives sur le cluster créé sont en fait produites par initdb et pas par pg_createcluster qui encapsule initdb.
Le problème est qu'initdb ignore la relocalisation des fichiers de configuration sous /etc effectuée par Debian pour se conformer au standard Unix.

Exemple d'utilisation directe d'initdb :

Code : Tout sélectionner

root@srvdeb10:~# mkdir /toto
root@srvdeb10:~# chown postgres:postgres /toto

postgres@srvdeb10:~$  /usr/lib/postgresql/10/bin/initdb -D /toto
Les fichiers de ce cluster appartiendront à l'utilisateur « postgres ».
...
Succès. Vous pouvez maintenant lancer le serveur de bases de données en utilisant :

    /usr/lib/postgresql/10/bin/pg_ctl -D /toto -l fichier de trace start

Avec pg_createcluster, cette partie du message "Vous pouvez etc." devrait effectivement être modifiée ou ne pas être affichée du tout.
Avec systemd, il est de toute façon préférable de ne pas utiliser directement pg_ctl et de toujours arrêter/démarrer le cluster avec systemctl (ou à la rigueur pg_ctlcluster avec les droits root sous Debian/Ubuntu)

Ce problème concerne pg_createcluster avec PostgreSQL 10 beta, sur la configuration stable au 15/08/2017 (debian stretch + postgreSQL 9.6) les informations provenant d'initdb ne sont pas du tout affichées par pg_createcluster.

Code : Tout sélectionner

root@srvdeb96:/tmp# pg_createcluster 9.6 test
Creating new cluster 9.6/test ...
  config /etc/postgresql/9.6/test
  data   /var/lib/postgresql/9.6/test
  locale fr_FR.UTF-8
  socket /var/run/postgresql
  port   5433
Cdlt. Phil - pgphil.ovh

jpcarayo
Messages : 5
Enregistré le : ven. 11 août 2017 19:58

Re: pg_createcluster

Message par jpcarayo » mer. 23 août 2017 12:00

Merci pour cette réponse.

J'ai crée le bug suivant : 872660
( https://bugs.debian.org/cgi-bin/bugrepo ... bug=872660 )

Statut : en cours, confirmé ...

A suivre.

( La prochaine fois, je pense à "remover these template lines" ...) ;)

Bien cordialement,

Répondre