В MongoDB не заводится после аварии на сервере



мой компьютер Ubuntu разбился, и когда я перезапустил его MongoDB не работал. Я пробовал следующие команды, и получил следующий результат:



$ mongo
Error: couldn't connect to server 127.0.0.1:27017 src/mongo/shell/mongo.js:91
exception: connect failed

$ service mongodb status
mongodb stop/waiting

$ service mongodb restart
stop: Unknown instance:
start: Rejected send message, 1 matched rules; type="method_call",
sender=":1.57" (uid=1000 pid=2227 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")

$ tail /var/log/mongodb/mongodb.log
[initandlisten] exception in initAndListen: 12596 old lock file, terminating
dbexit:
[initandlisten] shutdown: going to close listening sockets...
[initandlisten] shutdown: going to flush diaglog...
[initandlisten] shutdown: going to close sockets...
[initandlisten] shutdown: waiting for fs preallocator...
[initandlisten] shutdown: closing all files...
[initandlisten] closeAllFiles() finished
dbexit: really exiting now


(выход переформатирован в соответствии с макетом сайта.)



Что случилось? Как я могу это исправить?

760   6  

6 ответов:

файл журнала говорит вам, что вы есть "старый файл". MongoDB держит замок файл во время его работы. Он создает этот файл при запуске и удаляет его, когда он остановился. При сбое компьютера (или MongoDB сбои, например, через kill), этот файл не удаляется, и таким образом, база данных не запускается. Существование этого файла указывает на нечистое завершение работы MongoDB.

две вещи могут быть сделано:

  1. если это машина разработки и использование базы данных (а не программы), вы можете удалить файл вручную. Для MongoDB 2.2.2 работает на Ubuntu 12.10, в /var/lib/mongodb/mongod.lock. Для других версий, файл может быть в другом пути или он может быть назван mongo.lock.

  2. более безопасный маршрут-следовать за MongoDB долговечность и ремонт руководство. Таким образом, для машины с вышеуказанным конфигурации, вы должны выполнить следующие команды:

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

все, что мне нужно было сделать, это запустить: sudo mongod --repair

затем:

судо команду mongod

основываясь на моем опыте, я обычно удаляю "mongod.lock " файл, который находится внутри папки базы данных - в моем случае:

*Я просматриваю, где база данных установлена на моем ubuntu т. е." данные " папки.(данные cd); список файлов (ls) *Тогда, я буду удалять в "команду mongod.заблокировать " файл, который был автоматически создан при сбое базы данных, выдав "rm mongod.файл блокировки.

после чего я либо выдам "./mongod " чтобы начать монго Димон или монго, чтобы начать монго ракушка. И все будет хорошо.

Проверьте, достаточно ли свободного места на вашем сервере. Если не останется места, mongodb не запустится.

Это, вероятно, не лучшее решение, но если вы в отчаянии, вы можете попробовать это. Казалось, что только журнал был проблемой для меня, поэтому я предпринял следующие шаги:

  1. создать новый каталог данных. Возможно /var / lib / mongodb2
  2. обновить mongod.conf чтобы указать на новый каталог данных.
  3. Start mongoDB.
  4. если он запускается успешно, то вы можете выключите монго снова и продолжайте, иначе вы можете перестать читать здесь.
  5. найдите ваши предыдущие данные dir и скопируйте файлы для вашей базы данных в новый каталог данных (например, admin.0 администратор.1 админ.НС и т. д.)
  6. запуск mongoDB снова (все еще используя новый каталог данных)

после выполнения этих шагов (заняло менее 5 мин), я был запущен и работает, и все данные, казалось, в порядке.

спасибо. Мы также столкнулись с проблемой, когда MongoDB перезапускался снова и снова, и он жаловался на старый замок файлом. Я остановил MongoDB из списка служб Windows, а затем удалил . После этого я смог правильно запустить службу MongoDB, и она работала нормально.

Comments

    Ничего не найдено.