MongoDBでUnclean shutdownの際にmongod.lockを消す

昨日何も考えず、VirtualBox上のUbuntu(ゲスト)でMongoDB動かしたまま、
ホストのWindowsをシャットダウンして帰ったわけなんですが、
今朝起動したところ↓のようなエラーが出て起動できませんでした。

# /usr/local/mongodb/bin/mongod --replSet replica --port 27017 --dbpath /data/replica1 --rest --nojournal
Wed Jan 25 10:01:36 [initandlisten] MongoDB starting : pid=2131 port=27017 dbpath=/data/replica1 64-bit host=ubnt
Wed Jan 25 10:01:36 [initandlisten] db version v2.0.2, pdfile version 4.5
Wed Jan 25 10:01:36 [initandlisten] git version: 514b122d308928517f5841888ceaa4246a7f18e3
Wed Jan 25 10:01:36 [initandlisten] build info: Linux bs-linux64.10gen.cc 2.6.21.7-2.ec2.v1.2.fc8xen #1 SMP Fri Nov 20 17:48:28 EST 2009 x86_64 BOOST_LIB_VERSION=1_41
Wed Jan 25 10:01:36 [initandlisten] options: { dbpath: "/data/replica1", nojournal: true, port: 27017, replSet: "replica", rest: true }
**************
Unclean shutdown detected.
Please visit http://dochub.mongodb.org/core/repair for recovery instructions.
*************
Wed Jan 25 10:01:36 [initandlisten] exception in initAndListen: 12596 old lock file, terminating
Wed Jan 25 10:01:36 dbexit:
Wed Jan 25 10:01:36 [initandlisten] shutdown: going to close listening sockets...
Wed Jan 25 10:01:36 [initandlisten] shutdown: going to flush diaglog...
Wed Jan 25 10:01:36 [initandlisten] shutdown: going to close sockets...
Wed Jan 25 10:01:36 [initandlisten] shutdown: waiting for fs preallocator...
Wed Jan 25 10:01:36 [initandlisten] shutdown: closing all files...
Wed Jan 25 10:01:36 [initandlisten] closeAllFiles() finished
Wed Jan 25 10:01:36 dbexit: really exiting now

 
MongoDBのドキュメントのページのDurability and Repairの章をみると、
コマンドラインで mongod –repair するか、
mongoシェルで db.repairDatabase(); ってするかみたいです。
 
mongod –repairしてみると↓のようにクリアされたようです。

# ./mongod --repair
Wed Jan 25 10:47:50 [initandlisten] MongoDB starting : pid=2801 port=27017 dbpath=/data/db/ 64-bit host=ubnt
Wed Jan 25 10:47:50 [initandlisten] db version v2.0.2, pdfile version 4.5
Wed Jan 25 10:47:50 [initandlisten] git version: 514b122d308928517f5841888ceaa4246a7f18e3
Wed Jan 25 10:47:50 [initandlisten] build info: Linux bs-linux64.10gen.cc 2.6.21.7-2.ec2.v1.2.fc8xen #1 SMP Fri Nov 20 17:48:28 EST 2009 x86_64 BOOST_LIB_VERSION=1_41
Wed Jan 25 10:47:50 [initandlisten] options: { repair: true }
略
Wed Jan 25 10:48:00 [initandlisten] closeAllFiles() finished
Wed Jan 25 10:48:00 [initandlisten] journalCleanup...
Wed Jan 25 10:48:00 [initandlisten] removeJournalFiles
Wed Jan 25 10:48:00 [initandlisten] shutdown: removing fs lock...
Wed Jan 25 10:48:00 dbexit: really exiting now

 
で、起動しようとしたら、それでも同じエラーが出てるがや。。。

Wed Jan 25 10:52:57 [initandlisten] exception in initAndListen: 12596 old lock file, terminating

 
↓によると、mongod.lockっていうデータディレクトリ直下にあるロック用の
ファイルを消してやらないとダメみたいです。
[MongoDB]MongoDBの新機能:ジャーナリングについて詳しく| @doryokujin ブログ:勉強会はうちに帰っても勉強会
ということで。

# rm /data/replica1/mongod.lock
# rm /data/replica2/mongod.lock
# rm /data/replica3/mongod.lock

 
一応、もう一発mongod –repairカマしてから、
それぞれ↓で起動してめでたしめでたし。

/usr/local/mongodb/bin/mongod --replSet replica --port 27017 --dbpath /data/replica1 --rest --nojournal
/usr/local/mongodb/bin/mongod --replSet replica --port 27018 --dbpath /data/replica2 --rest --nojournal
/usr/local/mongodb/bin/mongod --replSet replica --port 27019 --dbpath /data/replica3 --rest --nojournal

 
クエリ的にも昨日入れたデータが取れて

/usr/local/mongodb/bin# ./mongo localhost:27018
MongoDB shell version: 2.0.2
connecting to: localhost:27018/test
SECONDARY> rs.slaveOk();
SECONDARY> db.posts.find( { "comments.author" : "jim" } )
{ "_id" : ObjectId("4f1e79261c0db27b00f1954c"), "author" : "joe", "created" : ISODate("2009-03-27T15:00:00Z"), "title" : "Yet another blog post", "text" : "Here is the text...", "tags" : [ "example", "joe" ], "comments" : [ 	{ 	"author" : "jim", 	"comment" : "I disagree" }, 	{ 	"author" : "nancy", 	"comment" : "Good post" } ] }

 
画面的にもOKです。

 

Scaling MongoDB
Scaling MongoDB

posted with amazlet at 12.01.25
Kristina Chodorow
Oreilly & Associates Inc
売り上げランキング: 53297

コメント

  1. MongoDBが起動してくれなくなったら

    はじめに MongoDBをUbuntuにインストールしてあるアプリを作っている。開発にはVMWareでやっているのだが、OSごと強制終了された後の建て直しに結構大変だったのでメモ。 経過 /etc/mongodb.conf…

タイトルとURLをコピーしました