Le serveur postgres ne parvient pas à démarrer, ne produit aucun journal. Comment le dépanner?

33

Je démarre une instance de postgres 9.3 sur un serveur Ubuntu 12.04:

~# service postgresql start 

 * The PostgreSQL server failed to start. Please check the log output.
                                                                     [fail]

le démarrage échoue, mais il ne laisse aucun journal, ce fichier est vide:

tail /var/log/postgresql/postgresql-9.3-main.log 

et il n'y a pas d'autres fichiers dans ce répertoire: / var / log / postgresql /

Quel est le meilleur moyen de résoudre ce problème?

Max L.
la source
S'agit-il d'une nouvelle installation ou avez-vous simplement effectué une mise à niveau? vérifie que l'utilisateur postgres a les droits sur le fichier de configuration et le fichier journal de
pg
3
Essayez de lancer postgres de la même manière que votre script (normalement, su - postgres; /usr/local/pgsql/bin/postgres -D /usr/local/pgsql/dataet voyez ce qu'il vous donne. Vous devrez peut-être modifier le nom d'utilisateur et les chemins d'accès en fonction de votre configuration.
Jenny D dit Reinstate Monica
En plus de ce que @JennyD a dit, j'ajouterais -d 3à la postgrescommande. Cela permettra une sortie de débogage plus complète écrite dans le journal. Vous pouvez réduire la sortie de débogage en la réglant sur 1 ou 2, ou l'augmenter en la modifiant en 4 ou 5. De plus, quelle est la sortie de which pgsql?
Zymhan
Comment PostgreSQL a-t-il été installé sur le serveur et d'où? Y a-t-il quelque chose dans les journaux système , par exemple / var / log / syslog, / var / log / messages, etc.?
Craig Ringer le
6
Je ne comprends pas pourquoi cette question a été fermée.
Guettli

Réponses:

53

Essayez de l'exécuter manuellement avec le débogage activé. Cela entraînera son exécution au premier plan et l’impression des messages d’erreur en erreur standard, tout en augmentant la verbosité.

Je pense que ce sera la bonne ligne de commande pour PostgreSQL 9.3 sur Ubuntu, mais cela pourrait nécessiter quelques ajustements très légers (remarque: line est divisé pour la lisibilité; vous pouvez le recombiner en une seule ligne (sans la barre oblique inverse) si vous le souhaitez):

/usr/lib/postgresql/9.3/bin/postgres -d 3 -D /var/lib/postgresql/9.3/main \
   -c config_file=/etc/postgresql/9.3/main/postgresql.conf

Le début correspond à l'emplacement du postgresfichier binaire, puis nous activons le débogage et le définissons au niveau 3 (vous pouvez l'ajuster vers le haut ou le bas pour augmenter ou réduire la verbosité). Ensuite, nous spécifions le répertoire de données et le fichier de configuration par lequel commencer. Ce devraient être les valeurs par défaut pour Ubuntu Server 12.04, je pense.

J'espère que cela vous donnera suffisamment d'informations pour déterminer où se situe le problème.

Christopher Cashell
la source
1
le démarrer manuellement fonctionne pour moi, mais l'utilisation du service ne fonctionne toujours pas. J'ai changé le répertoire de données par défaut. Y a-t-il quelque chose que je devrais mettre à jour pour que la commande de service fonctionne à nouveau pour démarrer Postgres?
chrismarx
1
@chrismarx - La servicecommande est simplement un wrapper pratique autour du /etc/init.d/script qui démarre et arrête réellement le processus. Vous devrez consulter ce script pour voir ce qu'il fait différemment de celui que vous exécutez manuellement. Faire quelque chose comme cela bash -x /etc/init.d/postgresql startpourrait être un bon endroit pour commencer vos recherches.
Christopher Cashell
3
merci, j'ai eu ce trié, il y avait des problèmes d'autorisations avec le répertoire de données, et semble que le service doit également être exécuté avec sudo
chrismarx
1
Gareautrain. Je ne pouvais pas trouver d'autre moyen de dire pourquoi PostgreSQL ne voulait pas démarrer, comme c'était le cas parce qu'il ne pouvait pas accéder à son répertoire de données à cause de problèmes de permission.
Aron Lorincz
1
pour moi c'était la permission de configs / etc / postgresql /
eugene