MongoDBが突然動作しなくなった(12.04)


8

1〜2か月前に12.04に更新した後、APTを介してMongoDBをインストールしました。それ以来、それはうまくいきました。私は設定や何かに変更を加えませんでした-それは箱から出してそのまま動作しました。

今日は起動しませんでした。ログオンすると、アプリケーションに突然「リスト内のどのサーバーにも接続できませんでした」というエラーが発生し、チェックしmongodて実行していませんでした。

ls -al /var/lib/mongodb

*.lockファイルを表示しません。

$ /etc/init.d/mongodb start
Rather than invoking init scripts through /etc/init.d, use the service(8)
utility, e.g. service mongodb start

Since the script you are attempting to invoke has been converted to an
Upstart job, you may also use the start(8) utility, e.g. start mongodb
start: Rejected send message, 1 matched rules; type="method_call", sender=":1.89" (uid=1000 pid=4284 comm="start mongodb ") interface="com.ubuntu.Upstart0_6.Job" member="Start" error name="(unset)" requested_reply="0" destination="com.ubuntu.Upstart" (uid=0 pid=1 comm="/sbin/init")

それから私は試しました sudo mongod --repair

Mon Aug 13 12:16:48 [initandlisten] MongoDB starting : pid=4350 port=27017 dbpath=/data/db/ 64-bit host=computer-localhost
Mon Aug 13 12:16:48 [initandlisten] db version v2.0.4, pdfile version 4.5
Mon Aug 13 12:16:48 [initandlisten] git version: nogitversion
Mon Aug 13 12:16:48 [initandlisten] build info: Linux yellow 2.6.24-29-server #1 SMP Tue Oct 11 15:57:27 UTC 2011 x86_64 BOOST_LIB_VERSION=1_46_1
Mon Aug 13 12:16:48 [initandlisten] options: { repair: true }
Mon Aug 13 12:16:48 [initandlisten] exception in initAndListen: 10296 dbpath (/data/db/) does not exist, terminating
Mon Aug 13 12:16:48 dbexit: 
Mon Aug 13 12:16:48 [initandlisten] shutdown: going to close listening sockets...
Mon Aug 13 12:16:48 [initandlisten] shutdown: going to flush diaglog...
Mon Aug 13 12:16:48 [initandlisten] shutdown: going to close sockets...
Mon Aug 13 12:16:48 [initandlisten] shutdown: waiting for fs preallocator...
Mon Aug 13 12:16:48 [initandlisten] shutdown: lock for final commit...
Mon Aug 13 12:16:48 [initandlisten] shutdown: final commit...
Mon Aug 13 12:16:48 [initandlisten] shutdown: closing all files...
Mon Aug 13 12:16:48 [initandlisten] closeAllFiles() finished
Mon Aug 13 12:16:48 dbexit: really exiting now

何が間違っているのでしょうか?

更新

だから私は試してsudo service mongodb start、それがようやく始まりました(私はこれを数回試しました)

mongodb start/running, process 4376

回答:


13

診断

まず、MongoDBログファイルをチェックして、サービスが開始されなかった理由を確認します。実行:

tail -f /var/log/mongodb/mongodb.log

1つのターミナルウィンドウで実行します。

sudo service mongodb restart

別の。ログファイルは、MongoDBが起動を試みていることを示し、失敗した場合はエラーメッセージを報告します。

修復

データベースの修復が必要であることがログに示されている場合は、次の2つの点に注意してください。

  1. デフォルトでmongodは、データベースファイルはにあると想定しています/data/db/が、Ubuntuパッケージはそれを検索するように構成しています/var/lib/mongodb/。したがってmongod、upstartスクリプトを使用せずに直接実行する場合は、--dbpath引数を追加して、データベースファイルの場所を指示する必要があります。
  2. mongodupstart を使用して実行mongodbすると、データベースファイルを所有するユーザーとして実行されます。あなたが実行している場合はmongod使用してsudoユーザーを指定しなくても、あなたはが所有するデータベースファイルになってしまいますroot。したがって、-u引数をに追加する必要がありますsudo

データベースファイルが現在所有されている場合、MongoDBが再び使用できるようにするにはroot、所有権を元に戻す必要がありますmongodb

sudo chown -R mongodb:mongodb /var/lib/mongodb/

TL; DR

パッケージ化されたディストリビューションを使用しているときにMongoDBで修復を実行するには、以下を実行する必要があります。

sudo -u mongodb mongod --repair --dbpath /var/lib/mongodb/

4

私も同じ問題を抱えて解決しました。私mongodbsudoそれから始めようとしたとき、プロセスがすでに実行されていることを示しました()。しかし、シェルから実行中のインスタンスにアクセスできません。接続に失敗したことが示されましmongodb start/running, process xxxx

ソリューション

だから私はロックファイルを削除しました:

sudo rm /var/lib/mongodb/mongod.lock

次に、サービスを再起動しました。

sudo service mongodb start

その後、モンゴは私のマシンで再び働きました!


0

私のマシン(Windowsインストール)でmongod.exeを起動する際にも同様の問題がありました。問題の原因.lockC:\data\dbなったファイルでした。私はそのファイルを削除し、問題は解決しました。


0

同様の問題があり、原因はちょっとばかげていました。ディスク容量が足りませんでした。

/var/log/mongodb/mongod.logでログを確認すると、次の行が見つかりました。

2015-04-13T10:56:37.132+0200 [initandlisten] ERROR: Insufficient free space for journal files

これが誰かの人生の30分を救うことを願っています。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.