mongodb レプリカセットのカスタマイズされた構成を探しています。
読み取りを実行する N 個の実稼働ノードがあります。多くの読み取りといくつかの書き込みを生成するインポート プロセスがある単一のノードがあります。
私が望むのは、ローカルノードとN個の実稼働ノードでのみインポートプロセスの読み取りと書き込みを行い、その単一ノードのクエリを回避することです
これについて何か提案はありますか?
ありがとう
mongodb レプリカセットのカスタマイズされた構成を探しています。
読み取りを実行する N 個の実稼働ノードがあります。多くの読み取りといくつかの書き込みを生成するインポート プロセスがある単一のノードがあります。
私が望むのは、ローカルノードとN個の実稼働ノードでのみインポートプロセスの読み取りと書き込みを行い、その単一ノードのクエリを回避することです
これについて何か提案はありますか?
ありがとう
まず、書き込みは常にレプリカ セットのプライマリに行われることに注意してください。読み取りトラフィックを分離できますが、書き込みはすべてプライマリに送信する必要があります。
@efanが提案したように、ノードを非表示としてマークできます。その場合、レプリカ セットのセマンティクスを使用して接続するアプリは、ノードを使用しません。非表示ノードからインポート プロセスを読み取るには、そのノードに直接接続する必要があります。しかし、そのクライアントはプライマリに接続されていないため、書き込みできません。したがって、レプリカ セットに接続する 2 つ目のクライアント オブジェクトを作成し、1 つを読み取り用に、もう 1 つを書き込み用に使用する必要があります。
より良い解決策は、タグ付きの読み取り設定を使用することだと思います。インポート ノードに "function":"import" のようなタグを付け、他のノードに "function":"normal" のようなタグを付けます。次に、運用ノードでタグ付き読み取り設定 "function":"normal" を指定し、インポート ジョブでタグ付き読み取り設定 "function":"import" を指定します。これにより、読み取りトラフィックが分離されます。
タグ付けされた読み取り設定はかなり最近の機能であることに注意してください。古い場合は、クライアント ドライバーまたは mongodb サーバー、あるいはその両方をアップグレードする必要があるかもしれません。
http://docs.mongodb.org/manual/core/read-preference/#replica-set-read-preference-tag-sets