MongoDB ha smesso improvvisamente di funzionare oggi (12.04)


8

Dopo l'aggiornamento a 12.04 un mese o due fa ho installato MongoDB tramite APT. Da quel momento ha funzionato bene. Non ho apportato modifiche alla configurazione o altro: ha funzionato immediatamente.

Oggi non è stato avviato, quando ho effettuato l'accesso ho avuto improvvisamente un errore "Impossibile connettersi a nessun server nell'elenco" nella mia applicazione e ho controllato e mongodnon funzionava.

ls -al /var/lib/mongodb

Non mostra *.lockfile.

$ /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")

Poi ho provato 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

Qualche idea su cosa sia sbagliato?

Aggiornare

Quindi ho provato sudo service mongodb starte finalmente è iniziato (l'ho provato diverse volte prima)

mongodb start/running, process 4376

Risposte:


13

Diagnosi

La prima cosa da fare è controllare i file di registro di MongoDB per capire perché il servizio non è stato avviato. Correre:

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

in una finestra del terminale e quindi eseguire:

sudo service mongodb restart

in un altro. Il file di registro dovrebbe mostrare MongoDB che tenta di avviare e segnalare un messaggio di errore in caso di errore.

Riparazione

Se i registri indicano che è necessario ripristinare il database, è necessario tenere presente due aspetti:

  1. Per impostazione predefinita, si mongodaspetta che i file del database siano presenti /data/db/, ma i pacchetti Ubuntu lo configurano per la ricerca /var/lib/mongodb/. Pertanto, se si esegue mongoddirettamente anziché utilizzare gli script di avvio, è necessario indicare dove si trovano i file del database aggiungendo un --dbpathargomento.
  2. Quando viene eseguito mongodutilizzando upstart, verrà eseguito come l' mongodbutente proprietario dell'utente dei file di database. Se esegui l' mongodutilizzo sudosenza specificare un utente, finirai con i file di database di proprietà di root. Quindi è necessario aggiungere un -uargomento a sudo.

Se i tuoi file di database sono attualmente di tua proprietà root, dovrai ricambiarne la proprietà mongodbprima che MongoDB possa riutilizzarli:

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

TL; DR

Per eseguire una riparazione su MongoDB quando si utilizza la distribuzione in pacchetto, è necessario eseguire:

sudo -u mongodb mongod --repair --dbpath /var/lib/mongodb/

4

Ho anche avuto lo stesso problema e l'ho risolto. Quando ho cercato di iniziare mongodbcon sudoesso ha mostrato il processo era già in esecuzione ( ). Ma non riesco ad accedere all'istanza in esecuzione tramite la shell. Ha mostrato che la connessione non è riuscita .mongodb start/running, process xxxx

La soluzione

Quindi ho eliminato il file di blocco:

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

Quindi ho riavviato il servizio:

sudo service mongodb start

Quindi Mongo ha lavorato di nuovo sulla mia macchina!


0

Ho anche avuto un problema simile all'avvio di mongod.exe nella mia macchina (installazione di Windows). Era un .lockfile in C:\data\dbcui stava causando il problema. Ho eliminato quel file e il problema è stato risolto.


0

Aveva un problema simile, la causa era un po 'stupida; Ero a corto di spazio su disco.

Controllando i log su /var/log/mongodb/mongod.log ho individuato la seguente riga:

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

Sperando che questo salvi qualcuno mezz'ora della sua vita.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.