postmaster

Nom

postmaster -- serveur de bases de données multiutilisateur 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, il 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 >>) pour gérer la connexion. Le postmaster gère aussi la communication parmi les processus du serveur.

Par défaut, le postmaster lance dans l'entrée et affiche les messages des traces dans le flux standard des erreurs. Dans les applications pratiques, le postmaster devrait être lancé comme processus d'arrière-plan, peut-être 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 est stockée sur un emplacement commun du système de fichiers. Quand le postmaster se lance, il a besoin de connaître l'emplacement des fichiers du groupe de données (<< data area >>). Ceci se fait avec l'option -D ou la variable d'environnement ; il n'y a pas de valeur par défaut. 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.

Options

postmaster accepte les arguments suivants en ligne de commande. Pour une discussion détaillée des options, consultez Section 16.4. 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. Ceci est seulement disponible s'il était activé lors de la compilation. Dans ce cas, la valeur par défaut est << on >>.

-B nombre_tampons

Initialise le nombre des tampons partagés utilisés par les processus serveur. La valeur par défaut est de 64 tampons de 8 Ko chacun.

-c nom=valeur

Configure un paramètre nommé en exécution. Consultez Section 16.4 pour une liste et des descriptions. 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 du système de fichiers du répertoire de données. Voir la discussion ci-dessus.

-F

Désactive les appels à fsync pour les améliorations de performance au risque d'une corruption de données dans le cas d'un arrêt brutal du système. Cette option correspond à initialiser fsync=false dans postgresql.conf. 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 écoute pour les connexions provenant des applications clientes. Par défaut, le serveur écoute sur toutes les adresses configurées (incluant localhost).

-i

Autorise la connexion TCP/IP (Internet domain) des clients. Sans cette option, seules les connexions de socket local du domaine Unix sont acceptées. Cette option correspond pour initialiser tcpip_socket=true dans postgresql.conf.

--tcpip-socket=false a l'effet opposé de cette option.

-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é au moment de la construction.

-l

Active les connexions sécurisées utilisant SSL. L'option -i est aussi requise. Vous devez avoir compilé le support de SSL pour utiliser cette option.

-N nombre_max_connexions

Initialise le nombre maximum de connexions clientes que ce postmaster acceptera. Par défaut, cette valeur est 32 mais il peut être initialisé aussi haut que ce que votre système supportera. (Notez que -B est requis pour être au moins deux fois la valeur de -N. Voir Section 16.5 pour une discussion des besoins de ressources système pour un grand nombre de connexions clientes.)

-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 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 les connexions 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 devrait se lancer en mode silencieux. C'est-à-dire qu'il sera 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 pour 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 problèmes de débogage 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 a pour but d'utiliser une opération ordinaire.

Ces options de cas spéciaux sont :

-n

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

-s

postmaster stoppera tous les autres processus serveur en envoyant le signal SIGSTOP mais ne les empêchera pas de terminer. Ceci permet aux développeurs système de récupérer les << core dump >> à partir de tous les processus serveur manuellement.

Environnement

PGCLIENTENCODING

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

PGDATA

Emplacement par défaut du répertoire de direction

PGDATESTYLE

Valeur par défaut du paramètre DATESTYLE en exécution (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

autres

Les autres variables d'environnement pourraient être utilisées pour désigner les autres emplacements du répertoire de stockage. Voir Section 18.5 pour plus d'informations.

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.5.

Astuce : Vous devriez être capable 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 devrait ê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 pourriez supprimer le fichier verrou mentionné dans le message et tenter de nouveau.

Un message d'échec indiquant l'incapacité à lier un port pourrait indiquer que ce port est déjà utilisé par un processus autre que le serveur PostgreSQL. Vous pourriez obtenir cette erreur si vous terminez le postmaster et si vous le relanciez 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. Finalement, vous pourriez 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ère les numéros de port sous le numéro 1024 pour être en << confiance >> et permet seulement l'accès par le superutilisateur Unix.

Notes

Si c'est possible, ne pas utiliser SIGKILL pour tuer le processus postmaster. Le faire ainsi empêchera 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 pourrait causer des problèmes de lancement d'un processus postmaster réel.

Pour terminer normalement postmaster, les signaux SIGTERM, SIGINT ou SIGQUIT peuvent être utilisés. Le premier attendra l'arrêt de tous les clients avant de quitter, le second déconnectera en force tous les clients et le troisième quittera immédiatement sans arrêt propre résultant dans le lancement d'une récupération lors du redémarrage. Le signal SIGHUP rechargera les fichiers de configuration du serveur.

La commande outil pg_ctl peut être utilisée pour démarrer et arrêter le postmaster en toute sûreté et confortablement.

Les options -- ne fonctionneront 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 fournira 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 lancera un postmaster communiquant via le port 1234. Pour se connecter à ce postmaster en utilisant psql, vous aurez besoin de lancer par exemple

$ psql -p 1234

ou d'initialiser la variable d'environnement PGPORT :

$ export PGPORT=1234
$ psql

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

$ postmaster -c sort_mem=1234
$ postmaster --sort-mem=1234

Chaque forme surcharge le paramétrage pouvant exister pour SORT_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 : Sauf dans le cas d'expérimentations à court terme, une meilleure pratique est d'éditer le paramétrage dans postgresql.conf plutôt que de se fier à l'option en ligne de commande plutôt qu'à un paramètre.

Voir aussi

initdb, pg_ctl