我尝试连接到mongodb based on the instructions provided here,我得到了这个错误:
vamsiampolu1@takenote:~/workspace (master) $ ./mongod
2014-11-17T09:00:10.101+0000 ** WARNING: --rest is specified without --httpinterface,
2014-11-17T09:00:10.101+0000 ** enabling http interface
warning: bind_ip of 0.0.0.0 is unnecessary; listens on all ips by default
2014-11-17T09:00:10.106+0000 [initandlisten] MongoDB starting : pid=2274 port=27017 dbpath=data 64-bit host=vamsiampolu1-takenote-1084968
2014-11-17T09:00:10.106+0000 [initandlisten] db version v2.6.5
2014-11-17T09:00:10.106+0000 [initandlisten] git version: e99d4fcb4279c0279796f237aa92fe3b64560bf6
2014-11-17T09:00:10.106+0000 [initandlisten] build info: Linux build8.nj1.10gen.cc 2.6.32-431.3.1.el6.x86_64 #1 SMP Fri Jan 3 21:39:27 UTC 2014 x86_64 BOOST_LIB_VERSION=1_49
2014-11-17T09:00:10.106+0000 [initandlisten] allocator: tcmalloc
2014-11-17T09:00:10.107+0000 [initandlisten] options: { net: { bindIp: "0.0.0.0", http: { RESTInterfaceEnabled: true, enabled: true } }, storage: { dbPath: "data", journal: { enabled: false } } }
**************
Unclean shutdown detected.
Please visit http://dochub.mongodb.org/core/repair for recovery instructions.
*************
2014-11-17T09:00:10.107+0000 [initandlisten] exception in initAndListen: 12596 old lock file, terminating
2014-11-17T09:00:10.107+0000 [initandlisten] dbexit:
2014-11-17T09:00:10.107+0000 [initandlisten] shutdown: going to close listening sockets...
2014-11-17T09:00:10.107+0000 [initandlisten] shutdown: going to flush diaglog...
2014-11-17T09:00:10.107+0000 [initandlisten] shutdown: going to close sockets...
2014-11-17T09:00:10.107+0000 [initandlisten] shutdown: waiting for fs preallocator...
2014-11-17T09:00:10.107+0000 [initandlisten] shutdown: closing all files...
2014-11-17T09:00:10.107+0000 [initandlisten] closeAllFiles() finished
2014-11-17T09:00:10.107+0000 [initandlisten] dbexit: really exiting now
我已尝试使用mongod --repair
标志。我也尝试执行此脚本,这是我在关闭本地计算机而不关闭mongod
的情况下执行的操作:
#!/bin/sh
sudo rm /var/lib/mongodb/mongod.lock
sudo -u mongodb mongod -f /etc/mongodb.conf --repair
sudo service mongodb start
它说找不到文件/var/lib/mongodb/mongod.lock
。我试图将mongodb
作为服务启动:
sudo service mongod start
其中,它要求我使用同样消息也失败的mongod start
。我读过关于net.http.enabled
应该被关闭的内容,因为它可能会增加网络暴露。
我曾使用基于Ubuntu 12.04
的{{1}}框一次,所以我尝试了:
vagrant
告诉我 mongodb start
不是有效的命令。
我也试过mongodb
告诉我:
mongo
我相信我可能错误地关闭了运行 vamsiampolu1@takenote:~/workspace (master) $ mongo
MongoDB shell version: 2.6.5
connecting to: test
2014-11-17T11:51:44.752+0000 warning: Failed to connect to 127.0.0.1:27017, reason: errno:111 Connection refused
2014-11-17T11:51:44.753+0000 Error: couldn't connect to server 127.0.0.1:27017 (127.0.0.1), connection attempt failed at src/mongo/shell/mongo.js:146
exception: connect failed
的终端窗口,因此无法启动它。但它不会让我做我通常做的事情并继续工作。
我还尝试运行此命令以查找mongod
是否已在运行:
mongod
我尝试使用以下命令停止运行:
vamsiampolu1@takenote:~/workspace (master) $ ps ax | grep mongod
2504 pts/2 S+ 0:00 grep --color=auto mongod
然后我又跑了一下,发现mongod是否还在运行:
stop mongod
当我试图运行时:
vamsiampolu1@takenote:~/workspace (master) $ ps ax | grep mongod
2524 pts/2 S+ 0:00 grep --color=auto mongod
当我尝试手动设置 vamsiampolu1@takenote:~/workspace (master) $ mongod --shutdown
There doesn't seem to be a server running with dbpath: /data/db
时:
dbpath
答案 0 :(得分:5)
在我看来,你已经做了很多事情而没有真正理解你在做什么。
但基本的理解是必要的。因此,这里有一个逐步指导,以清理环境,并希望修复数据库,注释。你做有备份,不是吗?
决定是否要将mongod用作您自己的用户vamsiampolu1
或root用户或专用用户。与流行的看法相反,sudo
命令不是Linux / UNIX等同于"我真的希望您执行此命令!"和一脚踩没有-u
参数的sudo使用root权限执行它的参数 - 进程的有效用户ID将是root用户。将为用户和组root创建文件和目录(问题中的进程除了root权限)。通常,最好为任何守护进程都有一个专用用户,所以你应该使用mongodb,因为这是由ubuntu和10gen包创建的用户。
现在我们需要确保没有mongod在运行:
vamsiampolu1@takenote:~ $ sudo killall mongod
(我们希望杀死所有mongod进程,并且因为唯一能够杀死可能属于不同于他自己的用户的进程的用户是root用户,我们告诉系统用root执行此命令权限)
我们确保所有文件和目录都属于适当的用户
vamsiampolu1@takenote:~ $ sudo chown mongodb.mongodb -r /var/lib/mongodb
(我们希望将/ var / lib / mongodb下的所有目录的所有者和组以递归方式更改为用户mongodb和group mongodb,我们需要相应的权限才能这样做)
我们以用户mongodb
删除lockfilevamsiampolu1@takenote:~ $ sudo -u mongodb rm /var/lib/mongodb/mongod.lock
接下来,我们将以用户mongodb
运行修复命令vamsiampolu1@takenote:~ $ sudo -u mongodb mongod -f /etc/mongod.conf --repair
请注意,-u mongodb
对于系统在修复后正常工作至关重要。
这可能需要一段时间。使用
仔细观察日志文件 vamsiampolu1@takenote:~ $ tail -n 100 -f /var/log/mongodb/mongod.log
如果是[initandlisten] dbexit: really exiting now
,那么......
使用
启动mongodvamsiampolu1@takenote:~ $ sudo -u mongodb mongod -f /etc/mongod.conf
现在应该可以了。如果没有,请添加最后一次出现
的日志文件部分[initandlisten] repairDatabase local
一直到你问题的结尾。
答案 1 :(得分:4)
如果您根据this方法设置了mongodb,请转到目录中的data文件夹。里面有一个文件mongod.lock。删除它(你不需要root权限)只需使用rm mongod.lock
。回到主目录并输入./mongod
。希望这会解决p
答案 2 :(得分:3)
就个人而言,我已经体验过这一点,并且我找到了一个快速修复程序,它也保留了所有数据。我是new developer
,如果您在cloud9上编码并使用mongoDB,我的回答将对您有用。
第1步:
导航到终端中安装mongoDB的目录,您将找到该文件
mongod*
您可以使用$ cd ~
第2步:
cd进入数据目录$ cd data/
第3步:
查看此目录ls
中的所有文件和文件夹。您会找到一个文件mongod.lock*
。
第4步:
使用$ rm mongod.lock
注意删除此文件:不要包含*
步骤5:cd回到根目录$ cd ~
并像往常一样启动mongo ./mongod
,确保所有数据安全。
古德勒克。
答案 3 :(得分:1)
对于Cloud9的免费用户,这是由于空间不足造成的,因为您只有2GB可用而且MongoDB需要大量数据。
这是一个解决方案:
mongod --port 27017 --smallfiles
注意:您可能会丢失部分文件