簡體   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