繁体   English   中英

在Cloud 9上连接到mongodb时出错

[英]Error connecting to mongodb on Cloud 9

我尝试根据此处提供的说明连接到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标志。我还尝试执行此脚本,以防万一我关闭本地计算机而未正确关闭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也将失败,并同样message.I看了一下net.http.enabled应留待关掉,因为它会增加网络的曝光。

我曾经使用过基于Ubuntu 12.04vagrant盒子,所以尝试了以下方法:

 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 

我尝试使用以下命令阻止其运行:

   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"

在我看来,您做了很多纵横交错的工作,却没有真正了解自己在做什么。

但是基本的了解是必要的 因此,这是一步一步的指南,用于清理环境并有望修复带注释的数据库。 有一个备份,不是吗?

  1. 确定是否要将mongod用作您自己的用户vamsiampolu1或root或专用用户。 与普遍的看法相反, sudo命令与Linux / UNIX上的“我真的希望您执行此命令!”等效。 和脚踩。 不带-u参数的sudo将以root特权执行其参数-进程的有效用户ID将是root的。 将为用户和组root创建文件和目录(除非所涉及的过程删除了root特权)。 通常,最好有一个专用于任何守护程序的用户,因此应使用mongodb,因为这是ubuntu和10gen软件包创建的用户。

  2. 现在我们需要确保没有mongod在运行:

     vamsiampolu1@takenote:~ $ sudo killall mongod 

    (我们想杀死所有mongod进程,并且由于唯一能够杀死可能与他本人不同的用户进程的用户是root,所以我们告诉系统以root特权执行此命令)

  3. 我们确保所有文件和目录都属于正确的用户

     vamsiampolu1@takenote:~ $ sudo chown mongodb.mongodb -r /var/lib/mongodb 

    (我们要递归将/ var / lib / mongodb下所有目录的所有者和组更改为用户mongodb和组mongodb,我们需要相应的特权)

  4. 我们以用户mongodb的形式删除锁定文件

     vamsiampolu1@takenote:~ $ sudo -u mongodb rm /var/lib/mongodb/mongod.lock 
  5. 接下来,我们将以mongodb用户身份运行repair命令

     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 ,那么……

  6. 从开始mongod

     vamsiampolu1@takenote:~ $ sudo -u mongodb mongod -f /etc/mongod.conf 

    现在应该可以工作了。 如果不是,请从最近一次出现的日志文件中添加该部分

     [initandlisten] repairDatabase local 

    一直到您的问题的结尾。

如果您已经按照方法设置了mongodb,请转到目录中的data文件夹。 在其中有一个文件mongod.lock。 删除它(您不需要root特权),只需使用rm mongod.lock 返回主目录并输入./mongod 希望这能解决问题

就个人而言,我已经经历了这一点,并且发现了一个快速修复程序,该修复程序还保留了您的所有数据。 我是一名new developer ,如果您在cloud9上进行编码并使用mongoDB,那么我的答案将对您有用。

第1步:导航到终端中安装mongoDB的目录,您将找到文件mongod*可以使用$ cd ~ cd〜导航至该目录。

步骤2:cd进入数据目录$ cd data/

步骤3:查看目录ls所有文件和文件夹。 您会找到一个文件mongod.lock*

步骤4:使用$ rm mongod.lock删除此文件注意:请勿包含*

步骤5:cd返回根目录$ cd ~ ./mongod并像往常一样启动./mongod ,所有数据都安全。

祝好运。

对于Cloud9的免费用户,这是由于空间不足而引起的,因为您只有2GB的可用空间,而MongoDB则需要大量空间。

这是一个解决方案:

mongod --port 27017 --smallfiles

注意:您可能会丢失一些文件

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM