私が達成したいのは、Mongodbをもっと確実に起動する/etc/init.dスクリプトを、ハードにダウンしたとしても、システムの場合には自動修復を試みるべきですロック状態にある。生産中のMongodbの再起動/自動修復
はい、私はこれを自分でスクリプトすることができましたが、誰かがこれを既に実行しているに違いないと思います。
サーバがダウンした後、Mongodbは/etc/init.d/mongodスクリプトで再起動しない状態になっています。明らかに、ロックファイルは削除する必要があり、 - repairオプションで起動し、--dbpathを修正してから正常に再起動する必要があります。場合によっては、db-filesの所有権をmongodbを実行するユーザに変更する必要もあります。もう1つの問題は、標準の/etc/init.d/mongodスクリプトがこのような状況で失敗を報告するのではなく、Mongodが起動したことを報告する「OK」ステータスで喜んで、誤って返されることです。
$ sudo /etc/init.d/mongod start
Starting mongod: forked process: 9220
all output going to: /data/mongo/log/mongod.log
[ OK ]
$ sudo /etc/init.d/mongod status
mongod dead but subsys locked
OSはCentOSまたはFedoraです。
誰でも/etc/init.dスクリプトやそのようなスクリプトへのポインタを修正していますか?その状況で自動的に修復を試みますか?モンゴートの監視犬として機能する別のツールがありますか?
なぜmongodbを自動的に修復しようとすると悪い考えがあるのですか?
$ sudo /etc/init.d/mongod status
mongod dead but subsys locked
$ sudo ls -l /var/lib/mongo/mongod.lock
-rw-r--r--. 1 mongod mongod 5 Nov 19 11:52 /var/lib/mongo/mongod.lock
$ sudo tail -50 /data/mongo/log/mongod.log
**************
old lock file: /data/mongo/db/mongod.lock. probably means unclean shutdown
recommend removing file and running --repair
see: http://dochub.mongodb.org/core/repair for more information
*************
Sat Nov 19 11:55:44 exception in initAndListen std::exception: old lock file, terminating
Sat Nov 19 11:55:44 dbexit:
Sat Nov 19 11:55:44 shutdown: going to close listening sockets...
Sat Nov 19 11:55:44 shutdown: going to flush oplog...
Sat Nov 19 11:55:44 shutdown: going to close sockets...
Sat Nov 19 11:55:44 shutdown: waiting for fs preallocator...
Sat Nov 19 11:55:44 shutdown: closing all files...
Sat Nov 19 11:55:44 closeAllFiles() finished
Sat Nov 19 11:55:44 dbexit: really exiting now
詳細な回答ありがとうございます。ジャーナリングは道に似ています..どのバージョンでジャーナリングを導入しましたか? – Tilo
ジャーナリングは1.8+で導入されました。設定ファイルに 'journal = true'を設定するだけです。 2.0以降では、ジャーナリングはデフォルトで有効になっています。ジャーナリングは「無料」ではないことに注意してください。 32ビットでは動作しません。追加のRAM、追加のディスクスペース、追加のIOを使用します。 (カウンターのような)インプレース更新をたくさん行う場合、これは重要な意味を持つ可能性があります。したがって、生産に盲目的に押し込む前に、ジャーナルモードをテストしてください。 –
偉大な答え!それは本当にスクリプトではありません:)ジャーナリングはおそらくトリックを行います。 32ビットは私の問題ではありません。ジャーナリングを試してみるよ!ご協力いただきありがとうございます! – Tilo