2

必要なコマンドの操作を練習するためだけに、ローカルホストにレプリカ セットをセットアップしています。家でも職場でもやっています。自宅では、rs.initiate()コマンドの実行に約 3 秒かかり、 が または のすべての状態を表示するのにさらに 2 ~ 3 分かかりrs.status()ます。これは私が期待したことについてです。PRIMARYSECONDARY

しかし、私が職場でそれを行うとrs.initiate()、mongo シェルでプロンプトを返すだけで約 7 分かかり、状態が allPRIMARYまたはになるまでにさらに 10 分かかりSECONDARYます。その間、私が接続を開始したのはSECONDARYまたはPRIMARYで、他の 2 つはRECOVERINGです。RECOVERING彼らはそこに 10 分間座っているだけです。

rs.initiate()コマンドが実行されている間、mongod私が接続した (ポート 10001) は、「データファイルの割り当て」、「データファイルの割り当て完了」、「新しいデータファイルの割り当て」などを吐き出し続けます。それらのファイルの。他の2つは、「replSetはlocal.system.replset configをselfまたはシード(EMPTYCONFIG)から取得できません」という状態でずっとそこに座っています。

私がチェックしている間rs.status()、2 つのセカンダリは、最初のステップでプライマリが行うのと同じように、接続を受け入れてドロップし、データファイルを割り当て続けます。

では、こんなに時間がかかるのでしょうか?もしそうなら、自宅の私のマシンが数秒でそれを行うのはなぜですか? 唯一の違いは、私が自宅で実行しているものは 64 ビットではなく 32 ビットであることです。

4

2 に答える 2

3

作業環境のディスクに使用可能なディスク容量はどれくらいありますか? デフォルトでは、MongoDB はその oplog (「ローカル」データベース) に使用可能なディスク容量の 5% を割り当てます。あなたが提供した情報に基づく私の推測では、使用可能なディスク容量は、自宅のマシンよりも職場のマシンの方がはるかに大きいということです。

rs.initiate() が完了するまで (つまり、PRIMARY が表示されるまで) 待ってから他のノードを開始すると、期待どおりの結果が得られると思います。

于 2013-01-25T05:11:13.170 に答える