My Ubuntu computer had crashed, and when I restarted it MongoDB wasn\'t working. I tried the following commands, and got the following output:
$ mongo
Error:
Check to see if you have enough free space on your server. If there is no room left mongodb won't start.
The log file is telling you that you have an "old lock file". MongoDB keeps a lock file while it's running. It creates this file when it is started, and deletes it when it's stopped. When the computer crashes (or MongoDB crashes, e.g. via kill
), this file is not deleted, and thus the database does not start. The existence of this file indicates unclean shutdown of MongoDB.
Two things can be done:
If this is a development machine and you haven't been using your database (and neither have your programs), you can remove the file manually. For MongoDB 2.2.2 running on Ubuntu 12.10, it's in /var/lib/mongodb/mongod.lock
. For other versions, the file could be in a different path or it could be named mongo.lock
.
The safer route is to follow MongoDB's Durability and Repair guide. In summary, for a machine with the above configuration, you should execute the following commands:
sudo -u mongodb mongod --repair --dbpath /var/lib/mongodb/
sudo service mongod start
Based on my experience, I usually delete the "mongod.lock" file that is inside the database folder - In my case:
*I browse to where the database is installed on my ubuntu i.e. "data" folder.(cd data); list the files (ls) *Then, I will remove the "mongod.lock" file that was automatically created when the database crashed, by issuing "rm mongod.lock" file.
After which I will either issue "./mongod" to start the mongo deamon or mongo to start the mongo shell. And everything will be fine.
If you did not use monitoring tools like Bluepill or Monit etc you will have to face this issue because after server crash due to some reason mongo didnot start its daemon automatically then you have to make it work manually, like sudo service mongod restart
I figured this issue but it needs some more tasks to be done, please make sure your dbpath at /etc/mongod.conf
before starting your mongo daemon.
For me it was
storage:
dbPath: /var/lib/mongodb
When i enter mongod
command it shows me MongoDB starting : pid=10795 port=27017 dbpath=/data/db 64-bit host=xyz.com
make sure your dbpath is as same as mentioned in /etc/mongod.conf
To do this you can type sudo mongod --dbpath /var/lib/mongodb
and then use mongod
command to start your mongo process at your desired dbpath.
FYI: start your mongo process with mongod
command
Removing .lock
file from mongo data directory dbpath
works for me.
e.g sudo sudo rm {data-directory}/mongod.lock
Thank's guys. We also faced an issue where MongoDB was restarting over and over again an it was complaining about old lock file. I stopped MongoDB from Windows service list and then I deleted the mongod.lock
file. After that I was able to start MongoDB service correctly and it worked fine.