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 26/02/2018 13:48:44

lajoumard
Membre

pg_ctl vs systemctl

Bonjour,
J'ai installé un moteur postgres 9.5 sur une redhat 7. J'arrive bien à la démarrer/arrêter avec systemctl et pg_ctl  dans presque tous les cas sauf :
Si je démarre l'instance avec "pg_ctl start" je ne peux pas l'arrêter ni demander son statut avec systemctl . Je suis obligé de l'arrêter avec pg_ctl puis de la redémarrer avec systemctl.

La sortie.
pg_ctl start  (avec user postgres
serveur en cours de démarrage
-bash-4.2$ 2018-02-26 12:43:35 CET [52755]: [1-1]LOG:  redirecting log output to logging collector process
2018-02-26 12:43:35 CET [52755]: [2-1]HINT:  Future log output will appear in directory "pg_log".

ps -fu postgres
UID         PID   PPID  C STIME TTY          TIME CMD
postgres  50089  50088  0 11:42 pts/1    00:00:00 -bash
postgres  52755      1  0 12:43 pts/2    00:00:00 /usr/pgsql-9.5/bin/postgres
postgres  52756  52755  0 12:43 ?        00:00:00 postgres: logger process
postgres  52758  52755  0 12:43 ?        00:00:00 postgres: checkpointer process
postgres  52759  52755  0 12:43 ?        00:00:00 postgres: writer process
postgres  52760  52755  0 12:43 ?        00:00:00 postgres: wal writer process
postgres  52761  52755  0 12:43 ?        00:00:00 postgres: autovacuum launcher process
postgres  52762  52755  0 12:43 ?        00:00:00 postgres: archiver process
postgres  52763  52755  0 12:43 ?        00:00:00 postgres: stats collector process
postgres  52764  52755  0 12:43 ?        00:00:00 postgres: bgworker: pglogical supervisor
postgres  52767  52755  0 12:43 ?        00:00:00 postgres: bgworker: pglogical manager 16386


J'essaye de demander le status avec systemctl  (en root)
systemctl status postgresql-9.5 -l
● postgresql-9.5.service - PostgreSQL 9.5 database server
   Loaded: loaded (/usr/lib/systemd/system/postgresql-9.5.service; enabled; vendor preset: disabled)
   Active: failed (Result: exit-code) since lun. 2018-02-26 11:44:33 CET; 1h 1min ago
  Process: 50283 ExecStop=/usr/pgsql-9.5/bin/pg_ctl stop -D ${PGDATA} -s -m fast (code=exited, status=1/FAILURE)
  Process: 50257 ExecStart=/usr/pgsql-9.5/bin/pg_ctl start -D ${PGDATA} -s -w -t 300 (code=exited, status=0/SUCCESS)
  Process: 50251 ExecStartPre=/usr/pgsql-9.5/bin/postgresql95-check-db-dir ${PGDATA} (code=exited, status=0/SUCCESS)
Main PID: 50260 (code=exited, status=0/SUCCESS)

févr. 26 11:44:24 srisvm-europapivotbdd01 systemd[1]: Starting PostgreSQL 9.5 database server...
févr. 26 11:44:24 srisvm-europapivotbdd01 pg_ctl[50257]: 2018-02-26 11:44:24 CET [50260]: [1-1]LOG:  redirecting log output to logging collector process
févr. 26 11:44:24 srisvm-europapivotbdd01 pg_ctl[50257]: 2018-02-26 11:44:24 CET [50260]: [2-1]HINT:  Future log output will appear in directory "pg_log".
févr. 26 11:44:25 srisvm-europapivotbdd01 systemd[1]: Started PostgreSQL 9.5 database server.
févr. 26 11:44:33 srisvm-europapivotbdd01 pg_ctl[50283]: pg_ctl : le fichier de PID « /base/europa/postmaster.pid » n'existe pas
févr. 26 11:44:33 srisvm-europapivotbdd01 pg_ctl[50283]: Le serveur est-il en cours d'exécution ?
févr. 26 11:44:33 srisvm-europapivotbdd01 systemd[1]: postgresql-9.5.service: control process exited, code=exited status=1
févr. 26 11:44:33 srisvm-europapivotbdd01 systemd[1]: Unit postgresql-9.5.service entered failed state.
févr. 26 11:44:33 srisvm-europapivotbdd01 systemd[1]: postgresql-9.5.service failed.

Le fichier postmater existe pourtant bien avec les bons droits .
[root@srisvm-europapivotbdd01 ~]# ll /base/europa/postmaster.pid
-rw------- 1 postgres postgres 77 26 févr. 12:43 /base/europa/postmaster.pid

Si vous avez une idée?
merci

Hors ligne

#2 27/02/2018 10:54:43

gleu
Administrateur

Re : pg_ctl vs systemctl

Pas d'idée particulièrement (en dehors du fait que systemd fait certainement des trucs dans votre dos), mais mixer les outils est généralement considéré comme une très mauvaise pratique. Soit vous utilisez pg_ctl, soit vous utilisez systemd, mais pas les deux. Et comme les packages utilisent systemd, je dirais qu'il faut passer par systemd.


Guillaume.

Hors ligne

Pied de page des forums