Documentation PostgreSQL 8.0.25 | ||||
---|---|---|---|---|
Pr�c�dent | Arri�re rapide | Chapitre 16. Environnement d'ex�cution du serveur | Avance rapide | Suivant |
Avant qu'une personne ait acc�s � la base de donn�es, vous devez d�marrer le serveur de bases de donn�es. Le programme serveur est appel� postmaster.. Le postmaster doit savoir o� trouver les donn�es qu'il est suppos� utiliser. Ceci se fait avec l'option -D. Du coup, la fa�on la plus simple de lancer le serveur est :
$ postmaster -D /usr/local/pgsql/data
qui laissera le serveur s'ex�cuter en avant plan. Pour cela, vous devez �tre connect� en utilisant le compte de l'utilisateur PostgreSQL. Sans -D, le serveur essaiera d'utiliser le r�pertoire de donn�es nomm� par la variable d'environnement PGDATA. Si cette variable ne le fournit pas non plus, le lancement �chouera.
Habituellement, il est pr�f�rable de lancer postmaster en t�che de fond. Pour cela, utilisez la syntaxe shell habituelle :
$ postmaster -D /usr/local/pgsql/data >journaux_trace 2>&1 &
Il est important de sauvegarder les sorties stdout et stderr du serveur quelque part, comme montr� ci-dessus. Cela vous aidera dans des buts d'audits ou pour diagnostiquer des probl�mes (voir la Section 21.3 pour une discussion plus d�taill�e de la gestion de journaux de trace).
Le postmaster prend aussi un certain nombre d'autres options en ligne de commande. Pour plus d'informations, voir la page de r�f�rence postmaster ainsi que le Section 16.4 ci-dessous.
Cette syntaxe shell peut rapidement devenir ennuyante. Donc, le programme d'emballage pg_ctl est fourni pour simplifier certaines t�ches. Par exemple :
pg_ctl start -l journaux_trace
lancera le serveur en t�che de fond et placera les sorties dans le journal de trace indiqu�. L'option -D a la m�me signification ici qu'avec postmaster. pg_ctl est aussi capable d'arr�ter le serveur.
Normalement, vous lancerez le serveur de bases de donn�es lors du d�marrage de l'ordinateur. Les scripts de lancement automatique sont sp�cifiques au syst�me d'exploitation. Certains sont distribu�s avec PostgreSQL dans le r�pertoire contrib/start-scripts. En installer un demandera les droits de root.
Diff�rents syst�mes ont diff�rentes conventions pour lancer les d�mons au d�marrage. La plupart des syst�mes ont un fichier /etc/rc.local ou /etc/rc.d/rc.local. D'autres utilisent les r�pertoires rc.d. Quoi que vous fassiez, le serveur doit �tre ex�cut� par le compte utilisateur PostgreSQL et non pas par root ou tout autre utilisateur. Donc, vous devriez probablement former vos commandes en utilisant su -c '...' postgres. Par exemple :
su -c 'pg_ctl start -D /usr/local/pgsql/data -l serverlog' postgres
Voici quelques suggestions suppl�mentaires par syst�me d'exploitation (dans chaque cas, assurez-vous d'utiliser le bon r�pertoire d'installation et le bon nom de l'utilisateur o� nous montrons des valeurs g�n�riques).
Pour FreeBSD, regardez le fichier contrib/start-scripts/freebsd du r�pertoire des sources de PostgreSQL.
Sur OpenBSD, ajoutez les lignes suivantes � votre fichier /etc/rc.local :
if [ -x /usr/local/pgsql/bin/pg_ctl -a -x /usr/local/pgsql/bin/postmaster ]; then su - -c '/usr/local/pgsql/bin/pg_ctl start -l /var/postgresql/log -s' postgres echo -n ' postgresql' fi
Sur les syst�mes Linux, soit vous ajoutez
/usr/local/pgsql/bin/pg_ctl start -l journaux_trace -D /usr/local/pgsql/data
� /etc/rc.d/rc.local soit vous jetez un œil � contrib/start-scripts/linux dans le r�pertoire des sources de PostgreSQL.
Sur NetBSD, vous pouvez utiliser les scripts de lancement de FreeBSD ou de Linux suivant vos pr�f�rences.
Sur Solaris, cr�ez un fichier appel� /etc/init.d/postgresql et contenant la ligne suivante :
su - postgres -c "/usr/local/pgsql/bin/pg_ctl start -l journaux_trace -D /usr/local/pgsql/data"
Puis, cr�ez un lien symbolique vers lui dans /etc/rc3.d de nom S99postgresql.
Tant que postmaster est lanc�, son PID est stock� dans le fichier postmaster.pid du r�pertoire de donn�es. C'est utilis� pour emp�cher les nombreux processus postmaster d'�tre ex�cut� dans le m�me r�pertoire de donn�es et peut aussi �tre utilis� pour arr�ter le processus postmaster.
Il existe de nombreuses raisons habituelles pour lesquelles le serveur �chouerait au lancement. V�rifiez le journal des traces du serveur ou lancez-le manuellement (sans redirection des sorties standard et d'erreur) et regardez les messages d'erreurs qui apparaissent. Nous en expliquons certains ci-dessous parmi les messages d'erreurs les plus communs.
LOG: could not bind IPv4 socket: Address already in use HINT: Is another postmaster already running on port 5432? If not, wait a few seconds and retry. FATAL: could not create TCP/IP listen socket
Ceci signifie seulement ce que cela sugg�re : vous avez essay� de lancer un autre postmaster sur le m�me port o� un autre est en cours d'ex�cution. N�anmoins, si le message d'erreur du noyau n'est pas Address already in use ou une quelconque variante, il pourrait y avoir un autre probl�me. Par exemple, essayer de lancer un postmaster sur un num�ro de port r�serv� pourrait avoir ce r�sultat :
$ postmaster -p 666 LOG: could not bind IPv4 socket: Permission denied HINT: Is another postmaster already running on port 666? If not, wait a few seconds and retry. FATAL: could not create TCP/IP listen socket
Un message du type
FATAL: could not create shared memory segment: Invalid argument DETAIL: Failed system call was shmget(key=5440001, size=4011376640, 03600).
signifie probablement que les limites de votre noyau sur la taille de la m�moire partag�e est plus petite que l'aire de fonctionnement que PostgreSQL essaie de cr�er (4011376640 octets dans cet exemple). Ou il pourrait signifier que vous n'avez pas du tout configur� le support de la m�moire partag�e de type System-V dans votre noyau. Comme contournement temporaire, vous pouvez essayer de lancer le serveur avec un nombre de tampons plus petit que la normale (option -B). Vous voudrez �ventuellement reconfigurer votre noyau pour accro�tre la taille de m�moire partag�e autoris�e. Vous pourriez voir aussi ce message en essayant de lancer plusieurs serveurs sur la m�me machine si le total de l'espace qu'ils requi�rent d�passe la limite du noyau.
Une erreur du type
FATAL: could not create semaphores: No space left on device DETAIL: Failed system call was semget(5440126, 17, 03600).
ne signifie pas qu'il vous manque de l'espace disque. Elle signifie que la limite de votre noyau sur le nombre de s�maphores System V est inf�rieur au nombre que PostgreSQL veut cr�er. Comme ci-dessus, vous pourriez contourner le probl�me en lan�ant le serveur avec un nombre r�duit de connexions autoris�es (option -N) mais vous voudrez �ventuellement augmenter la limite du noyau.
Si vous obtenez une erreur <<�illegal system call�>>, il est probable que la m�moire partag�e ou les s�maphores ne sont pas du tout support�s par votre noyau. Dans ce cas, votre seule option est de reconfigurer le noyau pour activer ces fonctionnalit�s.
Des d�tails sur la configuration des capacit�s IPC System V sont donn�s dans la Section 16.5.1.
Bien que les conditions d'erreurs possibles du c�t� client sont assez vari�es et d�pendantes de l'application, certaines pourraient �tre en relation direct avec la fa�on dont le serveur a �t� lanc�. Les conditions autres que celles montr�es ici devraient �tre document�es avec l'application client respective.
psql: could not connect to server: Connection refused Is the server running on host "server.joe.com" and accepting TCP/IP connections on port 5432?
Ceci est l'�chec g�n�rique <<�Je n'ai pas trouv� de serveur � qui parler�>>. Cela ressemble au message ci-dessus lorsqu'une connexion TCP/IP est tent�e. Une erreur commune est d'oublier de configurer le serveur pour qu'il autorise les connexions TCP/IP.
Autrement, vous obtiendrez ceci en essayant une communication de type socket de domaine Unix vers un serveur local :
psql: could not connect to server: No such file or directory Is the server running locally and accepting connections on Unix domain socket "/tmp/.s.PGSQL.5432"?
La derni�re ligne est utile pour v�rifier si le client essaie de se connecter au bon endroit. Si aucun serveur n'est ex�cut� ici, le message d'erreur du noyau sera typiquement soit Connection refused soit No such file or directory, comme ce qui est illustr� (il est important de r�aliser que Connection refused, dans ce contexte, ne signifie pas que le serveur a obtenu une demande de connexion et l'a refus�. Ce cas produira un message diff�rent comme indiqu� dans la Section 19.3). D'autres messages d'erreurs tel que Connection timed out pourraient indiquer des probl�mes plus fondamentaux comme un manque de connexion r�seau.
Pr�c�dent | Sommaire | Suivant |
Cr�er un groupe de base de donn�es | Niveau sup�rieur | Configuration � l'ex�cution |