0

これで、2つのシャード:shard3(16g)、shard4(15g)と3つのマシンがあります:次のようにデプロイします:10.10.10.5:(mongoS、configureserver、shard3 primary、shard4 primary)10.10.10.6:(mongoS、configureserver、shard3 Secondary 、shard4セカンダリ)10.10.10.7:(mongoS、configureserver、shard3 arbitor、shard4 arbitor)

今、パフォーマンステスト(新しいシャードの追加について)を行いたいのですが、本番環境を使用してテストすることはできません。これは、本番パフォーマンスに影響を与えるためです。したがって、すべてのデータを3台のマシンのテストにコピーします。 20.20.20.5、20.20.20.6、20.20.20.7、マニュアルを読んだのですが、もっといい方法が見つからないので、アドバイスをお願いします。

ちなみに、2つの小さな質問をしてください:最初:本番環境のように、アービターノードをセカンダリに変更するにはどうすればよいですか?つまり、10.7を10.6と読み取り圧力を共有したいので、10.10.10.7をセカンダリシャードに変更します。2番目:Mongosがプライマリノードを読み取るがセカンダリノードを読み取ることを示すにはどうすればよいですか?mongoSはセカンダリで読み取るときにプライマリに書き込むことを知っていますが、最新のデータをすぐに取得するためにプライマリノードで読み取りと書き込みの両方を行いたいです。よろしくお願いしますジャック

4

2 に答える 2

1

次のドキュメントを参照してください:http ://www.mongodb.org/display/DOCS/Import+Export+Tools 。やりたいことにmongoexportとmongoimportを使用できる可能性があります。または、mongodumpとmongorestoreを使用することもできます。これにより、データをテスト環境にバックアップおよび復元できます。

最初の質問:アービターをセカンダリに「変換」することはできません。これを行う唯一の実際の方法は、レプリカセットに新しいノードを追加し、次にアービターを停止して、後でレプリカセットから削除することです。既存のレプリカセットノードでrs.add()を使用して、レプリカセットに新しいmongodを追加できます。ダウンタイムを回避するために、この順序で実行します。ダウンタイムを気にしないのであれば、順序は特に重要ではありません。レプリカセットへのノードの追加に関するドキュメントは、次の場所にあります:http ://www.mongodb.org/display/DOCS/Replica+Sets+-+Basics

また、readScalingを実行してSlaveOK()を使用している場合は、プライマリからいずれかのセカンダリへのレプリケーションラグがある場合、古いデータを読み取る可能性があることに注意することが重要です。これがアプリケーションにとって問題ない場合でも、レプリカセット内の2つのノードを同時にクエリすると、レプリケーションラグに基づいて同じクエリに対して2つの異なる値を読み取る可能性があることを理解することが重要です。

2番目の質問:常にプライマリからの読み取り/書き込みのみを行いたい場合は、SlaveOKを使用して実行しないでください。SlaveOKがデフォルトですが、すでにオンになっている場合は、もう一度呼び出してfalseを渡します。

于 2012-09-04T22:37:50.110 に答える
0

プライマリアップとレプリカセットの過半数がある限り、レプリカセットは書き込み可能になります。したがって、当然、プライマリが過負荷にならず、4つのノードのうち2つを停止していない限り、プライマリに書き込むことができます。稼働中のノードの大部分にのみ複製されます。

一般に、偶数番号のレプリカセットは使用しないようにしています。そのため、アービターをオフラインにして、3つのレプリカセットに固執します。これは、アービターがいることで実際に何も勝てないためです。いずれかの方法で2つのノードに障害が発生した場合、過半数がなく、レプリカセットは読み取り専用になります。1つのノードがダウンした場合でも、書き込みは可能です。アービターは偶数セットでは何も助けません。

1つのセカンダリのみに送信されるこれらのクエリを実行しようとしたとき、新しいセカンダリはすべてデータごとに追いついていましたか?「リカバリ」状態の場合は、すべてのデータが複製されていないため、読み取りがまだ行われていない可能性があります。それとは別に、読み取り設定を指定する方法があります。

さまざまな読み取り設定のすべてとその使用方法に関するドキュメントは、http://docs.mongodb.org/manual/applications/replication/#read-preferenceにあります。

于 2012-09-07T17:28:39.800 に答える