PostgreSQLLa base de données la plus sophistiquée au monde.

postmaster

postmaster — serveur de bases de données multi-utilisateurs PostgreSQL

Synopsis

postmaster [-A [0] | [1] ] [-B nombre_de_tampons] [-c nom=valeur] [-d niveau_de_débogage] [-D répertoire_données] [-F] [-h nom_hôte] [-i] [-k répertoire] [-l] [-N nombre_max_connexions] [-o options_supplémentaires] [-p port] [-S] [--nom=valeur] [[-n] | [-s]]

Description

postmaster est le serveur de bases de données multi-utilisateurs PostgreSQL™. Pour qu'une application cliente accède à une base de données, elle se connecte (via le réseau ou localement) à un postmaster en cours d'exécution. Ensuite, le postmaster lance un processus serveur séparé (« postgres(1) ») pour gérer la connexion. Le postmaster gère aussi la communication entre les processus du serveur.

Par défaut, le postmaster se lance en avant plan et affiche les messages des traces dans le flux standard des erreurs. En pratique, le postmaster devrait être lancé comme processus d'arrière-plan, par exemple au démarrage.

Un postmaster gère toujours les données à partir d'exactement un groupe de bases de données. Ce groupe est une collection de bases de données qui sont stockées à un emplacement commun du système de fichiers (l'« aire des données »). Plus d'un processus postmaster peut se lancer sur un système à la fois, s'ils utilisent des aires de données et des ports différents (voir ci-dessous). Une aire de données est créée avec initdb(1).

Quand le postmaster se lance, il a besoin de connaître l'emplacement de l'aire des données. L'emplacement doit être indiqué avec l'option -D ou la variable d'environnement PGDATA ; il n'existe pas de valeur par défaut. Typiquement, -D ou PGDATA pointe directement vers le répertoire des données créé par initdb. D'autres configurations possibles du fichier sont discutées dans Section 17.2, « Emplacement des fichiers ».

Options

postmaster accepte les arguments suivants en ligne de commande. Pour une discussion détaillée des options, consultez Chapitre 17, Configuration du serveur. Vous pouvez aussi sauvegarder une saisie de la plupart des options en initialisant un fichier de configuration.

-A 0|1

Active les vérifications d'assertion en exécution, qui est une aide de débogage pour détecter les erreurs de programmation. Cette option est seulement disponible si elle était activée lors de la compilation de PostgreSQL™. Dans ce cas, la valeur par défaut est « on ».

-B nombre_tampons

Initialise le nombre de tampons partagés utilisés par les processus serveur. La valeur par défaut de ce paramètre est choisi par initdb ; référez-vous à Section 17.4.1, « Mémoire » pour plus d'informations.

-c nom=valeur

Configure un paramètre d'exécution. Les paramètres de configuration supportés par PostgreSQL™ sont décrits dans Chapitre 17, Configuration du serveur. La plupart des autres options en ligne de commande sont en fait des formes courtes de ces affectations de paramètres. -c peut apparaître plusieurs fois pour initialiser plusieurs paramètres.

-d niveau_de_débogage

Initialise le niveau de débogage. Plus cette valeur est haute, plus la sortie de débogage est importante. Les valeurs vont de 1 to 5.

-D répertoire_de_données

Spécifie l'emplacement dans le système de fichiers du répertoire de données et des fichiers de configuration. Voir Section 17.2, « Emplacement des fichiers » pour plus de détails.

-F

Désactive les appels à fsync. Cela permet une amélioration des performances mais fait prendre le risque d'une corruption de données en cas d'arrêt brutal du système. Cette option est équivalente à désactiver le paramètre de configuration fsync. Lire la documentation détaillée avant d'utiliser ceci !

--fsync=true a l'effet contraire de cette option.

-h nom_hôte

Spécifie le nom d'hôte ou l'adresse IP sur lequel le postmaster est en attente de connexions TCP/IP provenant des applications clientes. La valeur peut aussi être une liste d'adresses séparées par des virgules ou * pour indiquer d'écouter sur toutes les interfaces disponibles. Une valeur vide indique de ne pas écouter les adresses IP, auquel cas seuls les sockets de domaine Unix peuvent être utilisés pour se connecter au postmaster. Par défaut, écoute seulement sur localhost. Spécifier cette option est équivalent à configurer le paramètre listen_addresses.

-i

Autorise la connexion TCP/IP (Internet domain) des clients distants. Sans cette option, seules les connexions locales sont acceptées. Cette option correspond à la configuration tcpip_socket=true dans postgresql.conf.

Cette option est obsolète car elle ne permet pas d'accéder à toutes les possibilités de listen_addresses. Il est généralement préférable de configurer listen_addresses directement.

-k répertoire

Spécifie le répertoire du socket de domaine Unix sur lequel le postmaster écoute les connexions des applications clientes. La valeur par défaut est normalement /tmp mais peut être modifiée au moment de la construction.

-l

Active les connexions sécurisées utilisant SSL. PostgreSQL™ doit avoir été compilé avec le support de SSL pour que cette option soit disponible. Pour plus d'informations sur l'utilisation de SSL, référez-vous à Section 16.7, « Connexions tcp/ip sécurisées avec ssl ».

-N nombre_max_connexions

Initialise le nombre maximum de connexions clientes que ce postmaster accepte. Par défaut, cette valeur est 32 mais il peut être initialisé aussi haut que ce que votre système supporte. (Notez que -B doit être au moins deux fois la valeur de -N. Voir Section 16.4, « Gérer les ressources du noyau » pour une discussion des besoins de ressources système pour un grand nombre de connexions clientes.) Spécifier cette option est équivalent à configurer le paramètre max_connections.

-o options_supplémentaires

Les options spécifiées en ligne de commande dans options_supplémentaires sont passées à tous les processus serveur lancés par ce postmaster. Voir postgres(1) pour les possibilités. Si la chaîne d'option contient des espaces, la chaîne entière doit être entre guillemets.

-p port

Spécifie le port TCP/IP ou l'extension du fichier socket de domaine Unix local sur lequel écoute le postmaster pour la connexion des applications clientes. A pour défaut la valeur de la variable d'environnement PGPORT ou, si PGPORT n'est pas configurée, alors il a pour valeur par défaut la valeur établie lors de la compilation (normalement 5432). Si vous spécifiez un port autre que celui par défaut, alors toutes les applications clientes doivent spécifier le même port en utilisant soit les options en ligne de commande soit PGPORT.

-S

Spécifie que le processus postmaster doit se lancer en mode silencieux. C'est-à-dire qu'il est dissocié du terminal (de contrôle) de l'utilisateur, lancé dans son propre groupe de processus et redirige sa propre sortie standard et sa propre sortie standard des erreurs vers /dev/null.

Utiliser cette option désactive tous les messages de traces, ce qui n'est probablement pas ce que vous souhaitez car cela rend le débogage très difficile. Voir ci-dessous un meilleur moyen de lancer postmaster en tâche de fond.

--silent-mode=false a l'effet opposé de cette option.

--nom=valeur

Initialise un paramètre nommé en exécution ; une forme courte de -c.

Deux options supplémentaires en ligne de commande sont disponibles pour les débogages de problèmes causant l'arrêt anormal d'un processus de serveur. La stratégie ordinaire dans cette situation est de notifier tous les autres processus serveur qu'ils doivent se terminer et réinitialiser ensuite la mémoire partagée et les sémaphores. Ceci est dû au fait qu'un processus serveur errant peut avoir corrompu quelques états partagés avant de se terminer. Ces options sélectionnent des comportements alternatifs de postmaster dans cette situation. Aucune de ces options n'a pour but d'être utilisée ordinairement.

Ces options spéciales sont :

-n

postmaster réinitialise les structures de données partagées. Un développeur système ayant les connaissances nécessaires peut alors utiliser un débogueur pour examiner l'état des mémoires partagées et des sémaphores.

-s

postmaster stoppe tous les autres processus serveur en envoyant le signal SIGSTOP mais ne les termine pas. Ceci permet à un développeur système de récupérer manuellement les « core dump » à partir de tous les processus serveur.

Environnement

PGCLIENTENCODING

Codage des caractères par défaut utilisé par les clients. (Les clients peuvent surcharger ceci individuellement.) Cette valeur peut aussi être dans le fichier de configuration.

PGDATA

Emplacement par défaut du répertoire de données.

PGDATESTYLE

Valeur par défaut du paramètre d'exécution datestyle. (L'utilisation de cette variable d'environnement est obsolète.)

PGPORT

Port par défaut (de préférence, initialisé dans le fichier de configuration)

TZ

Fuseau horaire du serveur

Diagnostiques

Un message d'échec mentionnant semget ou shmget indique probablement que vous avez besoin de configurer votre noyau pour fournir les mémoires partagées et sémaphores adéquats. Pour plus de discussion, voir Section 16.4, « Gérer les ressources du noyau ».

[Astuce]

Astuce

Vous pouvez peut-être éviter de reconfigurer votre noyau en décrémentant shared_buffers pour réduire la consommation de mémoire partagée de PostgreSQL™ et/ou en réduisant max_connections pour réduire la consommation de sémaphores.

Un message d'échec suggérant qu'un autre postmaster est en cours d'exécution doit être vérifié avec attention, par exemple en utilisant la commande

$ ps ax | grep postmaster

ou

$ ps -ef | grep postmaster

suivant votre système. Si vous êtes certain qu'aucun postmaster en conflit n'est en cours d'exécution, vous pouvez supprimer le fichier verrou mentionné dans le message et tenter de nouveau.

Un message d'échec indiquant l'incapacité à lier un port peut indiquer que ce port est déjà utilisé par un processus autre que le serveur PostgreSQL™. Vous pouvez obtenir cette erreur si vous terminez le postmaster et si vous le relancez immédiatement en utilisant le même port ; dans ce cas, vous devez simplement attendre quelques secondes jusqu'à ce que le système d'exploitation ferme le port avant de réessayer. Enfin, vous pouvez obtenir cette erreur si vous spécifiez un numéro de port que votre système d'exploitation considère comme réservé. Par exemple, un grand nombre de versions d'Unix considèrent que les numéros de port inférieurs à 1024 sont « de confiance » et permettent seulement au superutilisateur Unix d'y accéder.

Notes

Si c'est possible, ne pas utiliser SIGKILL pour tuer le processus postmaster. L'utilisation de SIGKILL empêche postmaster de libérer les ressources du système (c'est-à-dire les mémoires partagées et les sémaphores) qu'il détient avant de terminer. Ceci peut causer des problèmes de lancement d'un processus nouveau postmaster.

Pour terminer normalement postmaster, les signaux SIGTERM, SIGINT ou SIGQUIT peuvent être utilisés. Le premier attend l'arrêt de tous les clients avant de quitter, le second déconnecte de force tous les clients et le troisième quitte immédiatement sans arrêt propre ce qui donne lieu à une opération de récupération lors du redémarrage. Le signal SIGHUP recharge les fichiers de configuration du serveur.

L'utilitaire pg_ctl(1) peut être utilisé pour démarrer et arrêter le postmaster en toute sûreté et confortablement.

Les options -- ne fonctionnent pas sur FreeBSD ou OpenBSD. Utilisez -c à la place. Ceci est un bogue dans les systèmes d'exploitation affectés ; une prochaine version de PostgreSQL™ fournit un contournement si ceci n'est pas corrigé.

Exemples

Pour lancer postmaster en tâche de fond en utilisant les valeurs par défaut, saisissez :

$ nohup postmaster >logfile 2>&1 </dev/null &

Pour lancer postmaster sur un port spécifique :

$ postmaster -p 1234

Cette commande lance un postmaster communiquant via le port 1234. Pour se connecter à ce postmaster en utilisant psql, il faut lancer par exemple

$ psql -p 1234

ou initialiser la variable d'environnement PGPORT :

$ export PGPORT=1234
$ psql

Les paramètres d'exécution nommés peuvent être configurés avec un des styles suivants :

$ postmaster -c work_mem=1234
$ postmaster --work-mem=1234

Chaque forme surcharge le paramétrage pouvant exister pour work_mem dans postgresql.conf. Notez que les tirets bas dans les noms de paramètre peuvent être écrits soit avec un tiret bas soit avec un tiret sur la ligne de commande.

[Astuce]

Astuce

Sauf dans le cas d'expérimentations à court terme, il est conseillé d'éditer le paramétrage dans postgresql.conf plutôt que d'utiliser les options de ligne de commande pour configurer un paramètre.

Voir aussi

initdb(1), pg_ctl(1)