web-dev-qa-db-fra.com

Mongod Service start se termine avec le code 100

Problème

Mon service de mongo ne démarre plus:

root@machine ~ # service mongod start
root@machine ~ # service mongod status
● mongod.service - High-performance, schema-free document-oriented database
   Loaded: loaded (/lib/systemd/system/mongod.service; enabled; vendor preset: enabled)
   Active: failed (Result: exit-code) since Tue 2017-08-15 12:03:51 CEST; 2s ago
     Docs: https://docs.mongodb.org/manual
  Process: 26942 ExecStart=/usr/bin/mongod --config /etc/mongod.conf (code=exited, status=100)
 Main PID: 26942 (code=exited, status=100)

Aug 15 12:03:50 machine systemd[1]: Started High-performance, schema-free document-oriented database.
Aug 15 12:03:51 machine systemd[1]: mongod.service: Main process exited, code=exited, status=100/n/a
Aug 15 12:03:51 machine systemd[1]: mongod.service: Unit entered failed state.
Aug 15 12:03:51 machine systemd[1]: mongod.service: Failed with result 'exit-code'.

Lorsque le code de sortie 100 est flou, défini comme suit:

Rendu par le mongod lorsque le processus lève une exception non interceptée.

Ce que j'ai fait

Tout d'abord, j'ai installé mon mongodb (3.4.7) sur Ubuntu 16.04.2 LTS via le guide officiel .

Démarrer et arrêter le service a bien fonctionné. J'ai donc continué à activer l'authentification (encore une fois via le guide officiel ).

Puis j'ai ajouté le service pour pouvoir s'exécuter au démarrage du serveur .

root@machine ~ # systemctl enable mongod.service

mongod.conf

J'ai également édité mon fichier de configuration, qui passe un yaml linter:

# Where and how to store data.
storage:
  dbPath: /var/lib/mongodb
  journal:
    enabled: true

#  engine: mmapv1
#  mmapv1:
#  wiredTiger:

# where to write logging data.
systemLog:
  destination: file
  logAppend: true
  path: /var/log/mongodb/mongod.log

# network interfaces
net:
  port: 27017
  bindIp: 127.0.0.1


#processManagement:

security:
  authorization: enabled

La propriété du fichier est

root@machine ~ # ls -la /etc/ | grep mongo
-rw-r--r--   1 root  root     599 Aug 15 11:42 mongod.conf

DbPath

Je sais qu’il ya des problèmes avec dbpath, c’est donc ce que /var/lib/mongodb a en termes de propriété:

root@ machine ~ # ls -la /var/lib/ | grep mongo
drwxr-xr-x  4 mongodb      mongodb      4096 Aug 15 11:54 mongodb

Liste de services

Lors de la liste de tous les services via service --status-all il n’existe aucune entrée pour les services relatifs aux mongos.

Quelqu'un a une idée de ce qui pourrait causer le problème?


[~ # ~] met à jour [~ # ~]

Comme suggéré, j'ai exécuté la commande suivante (avec une légère modification):

root@machine ~ /usr/bin/mongod --verbose --config /etc/mongod.conf &
[1] 28495

Quand je comprends bien, ceci est une exécution directe du binaire. Cela me permet maintenant de me connecter au moins à Mongo Shell:

root@machine ~ # mongo
MongoDB Shell version v3.4.7
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 3.4.7
> 

Cependant, l'état du service est toujours en échec avec le code de sortie 100.


UPDATE UPDATE

Lorsque vous tapez root@machine ~ # /usr/bin/mongod --verbose

Je reçois l'erreur suivante:

2017-08-15T13:45:40.973+0200 I CONTROL  [initandlisten] MongoDB starting : pid=28642 port=27017 dbpath=/data/db 64-bit Host=machine
2017-08-15T13:45:40.973+0200 I CONTROL  [initandlisten] db version v3.4.7
2017-08-15T13:45:40.973+0200 I CONTROL  [initandlisten] git version: cf38c1b8a0a8dca4a11737581beafef4fe120bcd
2017-08-15T13:45:40.973+0200 I CONTROL  [initandlisten] OpenSSL version: OpenSSL 1.0.2g  1 Mar 2016
2017-08-15T13:45:40.973+0200 I CONTROL  [initandlisten] allocator: tcmalloc
2017-08-15T13:45:40.973+0200 I CONTROL  [initandlisten] modules: none
2017-08-15T13:45:40.973+0200 I CONTROL  [initandlisten] build environment:
2017-08-15T13:45:40.973+0200 I CONTROL  [initandlisten]     distmod: ubuntu1604
2017-08-15T13:45:40.973+0200 I CONTROL  [initandlisten]     distarch: x86_64
2017-08-15T13:45:40.973+0200 I CONTROL  [initandlisten]     target_Arch: x86_64
2017-08-15T13:45:40.973+0200 I CONTROL  [initandlisten] options: { systemLog: { verbosity: 1 } }
2017-08-15T13:45:40.973+0200 D -        [initandlisten] User Assertion: 29:Data directory /data/db not found. src/mongo/db/service_context_d.cpp 98
2017-08-15T13:45:40.973+0200 I STORAGE  [initandlisten] exception in initAndListen: 29 Data directory /data/db not found., terminating
2017-08-15T13:45:40.973+0200 I NETWORK  [initandlisten] shutdown: going to close listening sockets...
2017-08-15T13:45:40.973+0200 I NETWORK  [initandlisten] shutdown: going to flush diaglog...
2017-08-15T13:45:40.973+0200 I CONTROL  [initandlisten] now exiting
2017-08-15T13:45:40.973+0200 I CONTROL  [initandlisten] shutting down with code:100
15
Jankapunkt

Vous pouvez toujours rencontrer des problèmes avec les autorisations dans votre répertoire de données. Surtout si vous avez démarré mongod à partir du terminal.

Je trouve que les fichiers de données sont créés sous root et non pas l'utilisateur mongodb lorsque vous utilisez le terminal. Pour réparer ..

cd /var/lib/mongodb
Sudo chown -R mongodb:mongodb *
55
rockettc
rm /var/lib/mongodb/mongod.lock
systemctl restart mongod
systemctl status mongod

Essaye ça!

8
A. Pascual

Supprimez le fichier mongod.lock Sous 'dbath' Et il devrait commencer sans problème.

0
Alex