-1

ご存知のように、mongodb の oplog は限られています。

新しいスレーブを作成しただけでは、データベース内のすべてがまだ同期されていません。データベース内のすべては、どの oplog よりも大きくなります。

では、どうすればこれを回避できますか?これは、oplog よりも大きな新しいスレーブを作成できないということですか? mongodbには、oplog以外にデータベースを同期するための他のメカニズムがありますか?

本当の場合、それはどのように正確に行われますか?

だから問題は何ですか?

4

1 に答える 1

2

データベースのサイズが妥当で、スナップショットがある場合は、(起動時または構成ファイルで --dbpath フラグによって指定された) ファイルをコピーして、新しいレプリカ セット メンバーをより迅速にオンラインにすることができます。ただし、初期同期は引き続き発生する可能性があります。

概念的には、次のことが起こります

  1. レプリカ セットの一部として新しいメンバーを起動します。
  2. rs.conf() に追加します
  3. 新しいレプリカセットは、最も近いもの (プライマリまたはセカンダリの可能性があります) から同期され、データのプルを開始し (初期同期)、それ自体の参照のために oplog 内のポイントをマークします。
  4. 次に、新しいセカンダリは、他のレプリカ セット メンバーからコピーした独自のタイムスタンプから oplog を適用します。

同期が失敗した場合、別の初期同期 (最初から) が行われます。非常に大きなデータセットの場合、同期に時間がかかることがあります。

ご質問への回答として

これは、oplog よりも大きな新しいスレーブを作成できないということですか?

oplog よりも大きな新しいメンバーを作成して追加できます

mongodbには、oplog以外にデータベースを同期するための他のメカニズムがありますか? はい、上記の初期同期とファイル コピーです。

于 2013-02-27T10:13:34.787 に答える