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

#1 26/06/2019 14:35:52

ced
Membre

Arrêter le service postgresql.service pour de bon

Bonjour,

Pour faire une montée de version majeure de PostgreSQL sous Debian Stretch, en utilisant pg_upgrade, j'ai besoin d'arrêter les deux instances (une en v10 et une en v11) sur le serveur.
Pour ça, j'utilise la commande :

sudo systemctl stop postgresql.service

Ça fonctionne : les deux instances s'arrêtent bien.

Mais curieusement, les services se relancent tous seuls au bout d'une ou deux minutes.

Je ne suis pas spécialiste de systemctl (j'ai essayé avec la commande disable, mais ça ne change rien), mais je me doute qu'il doit y avoir une configuration quelque part pour empêcher ce relancement automatique, bien ennuyeux pour poursuivre les opérations de migration.

Comment faire pour empêcher ce redémarrage automatique du service ?

Merci d'avance pour votre aide,

Cédric

Hors ligne

#2 26/06/2019 14:43:41

ced
Membre

Re : Arrêter le service postgresql.service pour de bon

Petit complément : j'observe le même redémarrage automatique quand j'exécute un pg_ctlcluster ... stop depuis l'utilisateur postgres.

Hors ligne

#3 26/06/2019 15:37:31

ced
Membre

Re : Arrêter le service postgresql.service pour de bon

Je m'auto-réponds partiellement...

A priori, c'est parce qu'il y a des services dépendants des services postgresql.
Donc, en arrêtant chaque service, puis en les masquant, j'arrive à les arrêter sans qu'ils puissent repartir tout seul :

sudo systemctl stop postgresql@10-main.service
sudo systemctl stop postgresql@11-main.service
sudo systemctl mask postgresql@10-main.service
sudo systemctl mask postgresql@11-main.service

Et pour les redémarrer, il faut les démasquer : 

sudo systemctl unmask postgresql@10-main.service
sudo systemctl unmask postgresql@11-main.service
sudo systemctl start postgresql@10-main.service
sudo systemctl start postgresql@11-main.service

Mais je ne sais pas si ce que je fais là (qui fournit le résultat attendu) est bien ou pas, et s'il y a une autre façon plus propre de faire ?
Je suis preneur de tout conseil.

Merci d'avance.

Hors ligne

#4 26/06/2019 16:12:19

rjuju
Administrateur

Re : Arrêter le service postgresql.service pour de bon

Pourquoi ne pas arrêter également les services dépendants ?  systemctl list-dependencies --reverse devrait vous donner l'information.

Hors ligne

#5 27/06/2019 16:00:21

dverite
Membre

Re : Arrêter le service postgresql.service pour de bon

Je ne suis pas certain que ça fonctionne (et je trouve ce redémarrage automatique un peu surprenant)
mais personnellement j'aurais tendance à voir plutôt par là:

(extrait de man pg_ctlcluster):

/etc/postgresql/cluster-version/cluster-name/start.conf
           This configuration file controls the start/stop behavior of the
           cluster. See section "STARTUP CONTROL" in pg_createcluster(8) for
           details.

et mettre provisoirement "disabled" dans le fichier, vu que (cf man pg_createcluster):

disabled
           Neither the init script, pg_ctlcluster(1), nor postgresql@.service
           are permitted to start/stop the cluster. Please be aware that this
           will not stop the cluster owner from calling lower level tools to
           control the postgres process; this option is only meant to prevent
           accidents during maintenance, not more.

Hors ligne

#6 27/06/2019 16:30:32

rjuju
Administrateur

Re : Arrêter le service postgresql.service pour de bon

Est-ce toujours d'actualité ?  Je pense notamment à https://www.postgresql.org/message-id/2 … g.df7cb.de

Hors ligne

#7 27/06/2019 17:38:19

dverite
Membre

Re : Arrêter le service postgresql.service pour de bon

Je ne connaissais pas cette méthode avec policy-rc.d. Je ne suis pas sûr que ce soit la même situation que pour ced parce que son pg_upgrade a l'air manuel (=pas automatiquement déclenché par un upgrade de package). Modulo le fait que de toute manière je ne comprends pas pourquoi systemd fait ce qui est décrit au départ de ce post.

Hors ligne

#8 27/06/2019 21:51:13

rjuju
Administrateur

Re : Arrêter le service postgresql.service pour de bon

Modulo le fait que de toute manière je ne comprends pas pourquoi systemd fait ce qui est décrit au départ de ce post.

Oui hmm

Hors ligne

Pied de page des forums