MongoDB nagle przestał działać dzisiaj (12.04)


8

Po aktualizacji do 12.04 miesiąc lub dwa lata temu zainstalowałem MongoDB przez APT. Od tego czasu działa dobrze. Nie wprowadziłem żadnych zmian w konfiguracji ani nic - po prostu zadziałało.

Dzisiaj się nie zaczęło, kiedy się zalogowałem, nagle w mojej aplikacji pojawił się błąd „nie można połączyć się z żadnym serwerem na liście” i sprawdziłem i mongodnie uruchomiłem się.

ls -al /var/lib/mongodb

Nie pokazuje *.lockplików.

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

Potem spróbowałem 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

Masz pojęcie, co jest nie tak?

Aktualizacja

Więc próbowałem sudo service mongodb starti wreszcie się zaczęło (próbowałem kilka razy wcześniej)

mongodb start/running, process 4376

Odpowiedzi:


13

Diagnoza

Pierwszą rzeczą do zrobienia jest sprawdzenie plików dziennika MongoDB, aby zobaczyć, dlaczego usługa się nie uruchomiła. Biegać:

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

w jednym oknie terminala, a następnie uruchom:

sudo service mongodb restart

winnym. Plik dziennika powinien pokazywać, że MongoDB próbuje uruchomić i zgłasza komunikat o błędzie, jeśli się nie powiedzie.

Naprawic

Jeśli dzienniki wskazują, że musisz naprawić bazę danych, należy pamiętać o dwóch kwestiach:

  1. Domyślnie mongodoczekuje się , że pliki bazy danych będą w /data/db/środku, ale pakiety Ubuntu konfigurują go do wyszukiwania /var/lib/mongodb/. Jeśli więc uruchamiasz mongodbezpośrednio, a nie używasz skryptów wstępnych, musisz powiedzieć mu, gdzie znajdują się twoje pliki bazy danych, dodając --dbpathargument.
  2. Podczas uruchamiania mongodprzy użyciu programu upstart będzie działał jako mongodbużytkownik, który jest właścicielem plików bazy danych. W przypadku uruchomienia mongodza pomocą sudobez podania użytkownikowi wtedy skończyć z plikami bazy danych posiadanych przez root. Musisz więc dodać -uargument sudo.

Jeśli twoje pliki bazy danych są obecnie własnością root, musisz zmienić ich własność z powrotem na, mongodbzanim MongoDB będzie mógł ich ponownie użyć:

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

TL; DR

Aby uruchomić naprawę w MongoDB podczas korzystania z dystrybucji w pakiecie, musisz uruchomić:

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

4

Miałem również ten sam problem i go rozwiązałem. Kiedy próbowałem zacząć mongodbod sudotego, pokazałem, że proces już działa ( ). Ale nie mogę uzyskać dostępu do działającej instancji przez powłokę. To pokazało, że połączenie nie powiodło się .mongodb start/running, process xxxx

Rozwiązanie

Więc usunąłem plik blokady:

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

Następnie ponownie uruchomiłem usługę:

sudo service mongodb start

Potem Mongo znów pracowało na mojej maszynie!


0

Miałem również podobny problem z uruchomieniem mongod.exe na moim komputerze (instalacja systemu Windows). Był to .lockplik, w C:\data\dbktórym przyczyną problemu. Usunąłem ten plik i problem został rozwiązany.


0

Miał podobny problem, ponieważ był trochę głupi; Brakowało mi miejsca na dysku.

Sprawdzanie dzienników na /var/log/mongodb/mongod.log Zauważyłem następujący wiersz:

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

Mam nadzieję, że uratuje to kogoś pół godziny życia.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.