连接到云9上的mongodb时出错
我尝试根据这里提供的说明连接到mongodb,我得到这个错误:
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
标志。我也试着执行这个脚本,这是我在没有正确closuresmongod
情况下closures本地机器的情况:
#!/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
没有find。我试图启动MongoDB作为服务:
sudo service mongod start
其中,它要求我使用mongod start
,这也失败了相同的消息。我已经读了net.http.enabled
应该被closures,因为它可能会增加networking曝光。
我曾经使用过一个基于Ubuntu 12.04
的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
我相信我可能错误地closures了运行mongod
的terminal窗口,因此无法启动它。但它不会让我做我通常做的事情,继续工作。
我也试图运行这个来发现如果mongod
已经在运行:
vamsiampolu1@takenote:~/workspace (master) $ ps ax | grep mongod 2504 pts/2 S+ 0:00 grep --color=auto mongod
我试图阻止它运行使用以下内容:
stop mongod
然后我又跑了一遍,发现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
:
vamsiampolu1@takenote:~/workspace (master) $ ./mongod --dbpath /data/db Error parsing command line: Multiple occurrences of option "--dbpath"
在我看来,你已经做了很多事情,但却不知道自己在做什么。
但基本的了解是必要的 。 所以,这里是一个循序渐进的指南来清理环境,并希望修复数据库,注释。 你有备份,不是吗?
-
决定要使用mongod作为自己的用户
vamsiampolu1
或root还是专用用户。 与stream行的看法相反,sudo
命令不是“我真的希望你执行这个命令!”的Linux / UNIX等价物。 和脚跺脚。 没有-u
参数的sudo使用root权限执行它的参数 – 进程的有效用户id将是root的。 将为用户和组根目录创build文件和目录(除了问题中的进程将删除root权限)。 通常情况下,最好有一个专门用于守护进程的用户,所以你应该使用mongodb,因为这是由ubuntu和10gen包创build的用户。 -
现在我们需要确保没有mongod运行:
vamsiampolu1@takenote:~ $ sudo killall mongod
(我们想要杀死所有的mongod进程,并且由于唯一能够查杀可能属于与他不同的用户的进程的唯一用户是root,所以我们告诉系统以root权限执行这个命令)
-
我们确保所有的文件和目录属于正确的用户
vamsiampolu1@takenote:~ $ sudo chown mongodb.mongodb -r /var/lib/mongodb
(我们想recursion地将用户和/ var / lib / mongodb下的所有者和组更改为用户mongodb和组mongodb,我们需要相应的权限来执行此操作)
-
我们以用户mongodb的forms删除locking文件
vamsiampolu1@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
,那么… -
用mongod启动
vamsiampolu1@takenote:~ $ sudo -u mongodb mongod -f /etc/mongod.conf
它应该现在工作。 如果不是,请添加最后一次出现的部分日志文件
[initandlisten] repairDatabase local
一直到你的问题结束。
如果您已经按照这种方法设置了mongodb,请转到目录中的数据文件夹。 里面有一个文件mongod.lock。 删除它(你不需要root权限)只需使用rm mongod.lock
。 回到主目录并input./mongod
。 希望这将解决p
就我个人而言,我已经经历了这一点,我发现一个快速修复,保留所有的数据。 我是一名new developer
,如果您在cloud9上编写代码并使用mongoDB,我的答案将适用于您。
步骤1:导航到您在terminal中安装mongoDB的目录,您将find文件mongod*
您可以使用$ cd ~
cd〜
第2步:cd进入数据目录$ cd data/
步骤3:查看该目录下的所有文件和文件夹。 你会发现一个文件mongod.lock*
。
第四步:使用$ rm mongod.lock
删除这个文件注意:不要包含*
第5步:回到根目录$ cd ~
./mongod
并像往常一样启动mongo ./mongod
,所有的数据都是安全的。
祝你好运。
对于Cloud9的免费用户来说,这是由于空间不足造成的,因为你只有2GB可用,而MongoDB需要大量的空间。
这是一个解决scheme:
mongod --port 27017 --smallfiles
注意:您可能会丢失一些文件