web-dev-qa-db-fra.com

Le service MongoDB ne démarre pas après la configuration initiale

J'utilise Fedora 20 et j'ai installé MongoDB selon le Guide d'installation de Red Hat sur la documentation officielle. J'ai pu exécuter le démon mongod en tant que service sans erreur la toute première fois, mais lorsque j'ai arrêté ma machine et que je suis revenu, le service a refusé de démarrer en raison d'un échec.

Dans mon journal, répertorié après l'exécution réussie, je vois ceci:

***** SERVER RESTARTED *****
ERROR: Cannot write pid file to /var/run/mongodb/mongod.pid: No such file or directory

Si j'essaie de démarrer mongod ou d'exécuter mongod --repair manuellement, j'obtiens ce message lors d'un échec de démarrage:

ERROR: dbpath (/data/db) does not exist.
Create this directory or give existing directory in --dbpath.

C'est étrange étant donné que dans mon fichier de configuration dans /etc/mongod.conf, les paramètres du chemin d'accès à la base de données sont les suivants:

dbpath=/var/lib/mongo

Enfin, si j'exécute cette commande:

mongod --dbpath /var/lib/mongo

Le démon démarre très bien. Toutefois, je ne parviens pas à reproduire ce comportement sans erreur pour démarrer un service.

Quelqu'un peut-il me dire exactement ce qui ne va pas et comment commencer à exécuter mongod en tant que service?

ÉDITER

Je reçois ce message si je lance mongod --config /etc/mongod.conf:

about to fork child process, waiting until server is ready for connections. forked process: 2702 ERROR: child process failed, exited with error number 1

Le /var/run/mongodb le répertoire n'existait pas, donc je l'ai créé et attribué à l'utilisateur mongod. Malheureusement, cela ne fait pas beaucoup de différence.

Ma /var/log/mongodb/mongod.log affiche ce message:

[initandlisten] exception in initAndListen: 10309 Unable to create/open lock file: /var/lib/mongo/mongod.lock errno:13 Permission denied Is a mongod instance already running?, terminating

14
Pori

Ce qui a fonctionné pour moi sur Fedora 20: nous devons créer le répertoire temp à chaque démarrage, et cela est géré par systemd-tmpfiles. Donc, créez un fichier /lib/tmpfiles.d/mongodb.conf et mettez une ligne dedans:

d /var/run/mongodb 0755 mongod mongod

Cela semble le gérer lors des redémarrages; si vous ne voulez pas redémarrer tout de suite, vous pouvez l'exécuter avec:

Sudo systemd-tmpfiles --create mongodb.conf

(Voir les pages de manuel pour les fichiers systemd-tmp)

32
Wayne

J'ai le même problème, je l'ai résolu temporairement, désactivant SELinux, redémarré la machine, éliminé mongod.lock:

#rm /var/lib/mongo/mongod.lock

En créant le fichier /var/run/mongodb/mongo.pid (comme mentionné dans le fichier de configuration /etc/mongod.conf):

#mkdir /var/run/mongodb
#touch /var/run/mongodb/mongod.pid

et donner 777 autorisations:

#chmod 777 /var/run/mongodb/mongod.pid 

et commencer mongo:

#service mongod start

Mais le problème persiste après le redémarrage de la machine. Le dossier et le fichier disparaissent.

8
Deoxyseia

J'ai passé un certain temps à examiner cela, et il semble que le dossier pid et les autorisations de fichier ne fonctionnent pas avec le démon par défaut.

La solution la plus simple que j'ai rencontrée est de désactiver le fichier pid en mettant simplement un # devant la ligne dans le fichier de configuration.

vi /etc/mongod.conf

recherchez la ligne qui indique pidfilepath =/var/run/mongodb/mongod.pid et modifiez-la en conséquence.

# pidfilepath=/var/run/mongodb/mongod.pid

Pour plus d'informations sur les commentaires, vérifiez ici. http://docs.mongodb.org/manual/reference/configuration-options/#processManagement.pidFilePath

7
vipero07

Si vous démarrez Mongod en tant que service en utilisant:

Sudo service mongod start

Assurez-vous que les répertoires définis pour logpath, dbpath et pidfilepath dans votre mongod.conf existent et appartiennent à mongod: mongod.

5
thearrow

J'avais le même problème lors de l'exécution de mongodb 3.0.4 sur OpenSuse 13.2, et j'ai trouvé que le répertoire mongod sous/var/run était manquant. Si j'ai créé le répertoire manuellement, il disparaîtrait après un redémarrage.

Je l'ai résolu en ajoutant les lignes suivantes à mon script de démarrage /etc/init.d/mongod:

mkdir -p /var/run/mongod  
chown $MONGO_USER:$MONGO_GROUP /var/run/mongod
1
Tony Cihak

Commentez sous la ligne de votre fichier "mongo.conf".

pidfilepath =/var/run/mongodb/mongod.pid

0
Shrinivas Kalangutkar

Cela a fonctionné pour moi dans Ubuntu:

Sudo kill $(Sudo lsof -t -i:27017) 
Sudo rm -rf /tmp/mongodb-27017.sock
Sudo rm -f /var/lib/mongo/mongod.lock
Sudo rm -f /var/run/mongodb/mongod.pid
Sudo mkdir -p  /var/run/mongodb/
Sudo touch /var/run/mongodb/mongod.pid
Sudo chown -R  mongodb:mongodb /var/run/mongodb/
Sudo chown mongodb:mongodb /var/run/mongodb/mongod.pid
Sudo service mongod start
0
victortv

commandes suivantes résolues pour cent os

Erreur [~ # ~] [~ # ~] :

 service mongod status
 Error starting mongod. /var/run/mongodb/mongod.pid exists

FIXE PAR:

   rm /var/lib/mongo/mongod.lock
   chown -R mongod:mongod /var/log/mongodb/
   chown -R mongod:mongod /var/run/mongodb/
   chown -R mongod:mongod /var/lib/mongo/
   chmod 777 /var/run/mongodb/mongod.pid

   mongod --dbpath /var/lib/mongo
0
Vasudeva Krishnan

Nous devons créer l'emplacement temp dir de pidfile /var/run/mongodb qui est géré par systemd-tmpfiles. Donc, créez un fichier /lib/tmpfiles.d/mongodb.conf en tant que root:

lnx #> Sudo su
lnx #> cd /lib/tmpfiles.d
lnx #> echo "d/var/run/mongodb 0755 mongod mongod"> mongodb.conf

Ensuite, redémarrez ou exécutez cette commande pour activer ce répertoire temporaire:

lnx #> Sudo systemd-tmpfiles --create mongodb.conf

Démarrer le service Mongod:

lnx #> Sudo systemctl start mongod.service

Bibliographie: Fedora et Mongodb · l33tsource

0
user1630938

Je viens de rencontrer un problème similaire sur Ubuntu. Rencontré presque tous les conseils d'ERREUR, comme

child process failed, exited with error number 1

ou child process failed, exited with error number 100

ou [signalProcessingThread] got signal 2 (Interrupt: 2), will terminate after current cmd ends

Plusieurs fois, je supprime le Mongodb et j'essaie de réinstaller, mais le problème demeure ...

Enfin, je suis arrivé à cette façon: sauvegardez d'abord vos données, puis supprimez Mongodb avec

#Sudo apk-get autoremove mongodb-org

Découvrez tous les fichiers liés à mongodb:

/#find -name mongo*

Supprimez-les tous avec "rm" ou "rmdir", y compris les packages dans/var/cache/... et tout.

Répétez ensuite l'installation comme la première fois:

#echo "deb http://repo.mongodb.org/apt/ubuntu "$(lsb_release -sc)"/mongodb-org/3.0 multiverse" | Sudo tee /etc/apt/sources.list.d/mongodb-org-3.0.list
#Sudo apt-get update
#Sudo apt-get install -y mongodb-org

Il fonctionnera à nouveau.

0
caoyou

j'ai rencontré le même problème, lorsque je modifie mon mongod.conf comme suit et que le problème est résolu ~

port=27017
dbpath=/usr/local/mongodb/data/db/
logpath=/usr/local/mongodb/logs
fork = true

conseils: logpath est le fichier journal et non un dossier.

0
haihu