MongoDB a soudainement cessé de fonctionner aujourd'hui (12.04)

8

Après avoir mis à jour la version 12.04 il y a un mois ou deux, j'ai installé MongoDB via APT. Depuis, cela a bien fonctionné. Je n'ai apporté aucune modification à la configuration ou à quoi que ce soit - cela a juste fonctionné hors de la boîte.

Aujourd'hui, cela n'a pas commencé, lorsque je me suis connecté, j'ai soudainement rencontré une erreur "Impossible de se connecter à un serveur de la liste" dans mon application et j'ai vérifié et mongodne fonctionnais pas.

ls -al /var/lib/mongodb

N'affiche aucun *.lockfichier.

$ /etc/init.d/mongodb start
Rather than invoking init scripts through /etc/init.d, use the service(8)
utility, e.g. service mongodb start

Since the script you are attempting to invoke has been converted to an
Upstart job, you may also use the start(8) utility, e.g. start mongodb
start: Rejected send message, 1 matched rules; type="method_call", sender=":1.89" (uid=1000 pid=4284 comm="start mongodb ") interface="com.ubuntu.Upstart0_6.Job" member="Start" error name="(unset)" requested_reply="0" destination="com.ubuntu.Upstart" (uid=0 pid=1 comm="/sbin/init")

J'ai essayé sudo mongod --repair

Mon Aug 13 12:16:48 [initandlisten] MongoDB starting : pid=4350 port=27017 dbpath=/data/db/ 64-bit host=computer-localhost
Mon Aug 13 12:16:48 [initandlisten] db version v2.0.4, pdfile version 4.5
Mon Aug 13 12:16:48 [initandlisten] git version: nogitversion
Mon Aug 13 12:16:48 [initandlisten] build info: Linux yellow 2.6.24-29-server #1 SMP Tue Oct 11 15:57:27 UTC 2011 x86_64 BOOST_LIB_VERSION=1_46_1
Mon Aug 13 12:16:48 [initandlisten] options: { repair: true }
Mon Aug 13 12:16:48 [initandlisten] exception in initAndListen: 10296 dbpath (/data/db/) does not exist, terminating
Mon Aug 13 12:16:48 dbexit: 
Mon Aug 13 12:16:48 [initandlisten] shutdown: going to close listening sockets...
Mon Aug 13 12:16:48 [initandlisten] shutdown: going to flush diaglog...
Mon Aug 13 12:16:48 [initandlisten] shutdown: going to close sockets...
Mon Aug 13 12:16:48 [initandlisten] shutdown: waiting for fs preallocator...
Mon Aug 13 12:16:48 [initandlisten] shutdown: lock for final commit...
Mon Aug 13 12:16:48 [initandlisten] shutdown: final commit...
Mon Aug 13 12:16:48 [initandlisten] shutdown: closing all files...
Mon Aug 13 12:16:48 [initandlisten] closeAllFiles() finished
Mon Aug 13 12:16:48 dbexit: really exiting now

Une idée de ce qui ne va pas?

Mise à jour

J'ai donc essayé sudo service mongodb startet ça a finalement commencé (j'ai essayé plusieurs fois auparavant)

mongodb start/running, process 4376
Xeoncross
la source

Réponses:

13

Diagnostic

La première chose à faire est de vérifier les fichiers journaux de MongoDB pour voir pourquoi le service n'a pas démarré. Courir:

tail -f /var/log/mongodb/mongodb.log

dans une fenêtre de terminal, puis exécutez:

sudo service mongodb restart

en autre. Le fichier journal doit montrer MongoDB essayant de démarrer et de signaler un message d'erreur en cas d'échec.

réparation

Si les journaux indiquent que vous devez réparer votre base de données, il y a deux points à garder à l'esprit:

  1. Par défaut, mongods'attend à ce que les fichiers de base de données se trouvent dans /data/db/, mais les packages Ubuntu le configurent pour qu'ils le regardent /var/lib/mongodb/. Donc, si vous exécutez mongoddirectement plutôt que d'utiliser les scripts upstart, vous devez lui indiquer où se trouvent vos fichiers de base de données en ajoutant un --dbpathargument.
  2. Lors de l'exécution à l' mongodaide de upstart, il s'exécutera en tant mongodbqu'utilisateur qui est l'utilisateur propriétaire des fichiers de base de données. Si vous exécutez en mongodutilisant sudosans spécifier un utilisateur, vous vous retrouverez avec des fichiers de base de données appartenant à root. Vous devez donc ajouter un -uargument à sudo.

Si vos fichiers de base de données appartiennent actuellement à rootvous, vous devrez modifier leur propriété mongodbavant que MongoDB puisse les réutiliser:

sudo chown -R mongodb:mongodb /var/lib/mongodb/

TL; DR

Pour exécuter une réparation sur MongoDB lors de l'utilisation de la distribution packagée, vous devez exécuter:

sudo -u mongodb mongod --repair --dbpath /var/lib/mongodb/
David Edwards
la source
4

J'ai également eu le même problème et l'ai résolu. Quand j'ai essayé de commencer mongodbavec sudoil a montré le processus était en cours d' exécution ( ). Mais je ne peux pas accéder à l'instance en cours d'exécution via le shell. Il a montré que la connexion a échoué .mongodb start/running, process xxxx

La solution

J'ai donc supprimé le fichier de verrouillage:

sudo rm /var/lib/mongodb/mongod.lock

J'ai ensuite redémarré le service:

sudo service mongodb start

Puis Mongo a retravaillé ma machine!

Damodaran
la source
0

J'ai également eu un problème similaire de démarrage de mongod.exe sur ma machine (installation de Windows). Le .lockfichier C:\data\dbétait à l'origine du problème. J'ai supprimé ce fichier et le problème a été résolu.

George Joseph
la source
0

Eu un problème similaire, la cause était un peu stupide; J'étais à court d'espace disque.

En vérifiant les journaux dans /var/log/mongodb/mongod.log, j'ai repéré la ligne suivante:

2015-04-13T10:56:37.132+0200 [initandlisten] ERROR: Insufficient free space for journal files

En espérant que cela sauve quelqu'un une demi-heure de sa vie.

Edo
la source