問題タブ [replicaset]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
mongodb - データベースにヒットする readPreference MongoDB クエリが使用しているものを確認するにはどうすればよいですか?
readPreference: 'secondaryPreferred'
MongoDB 2.4 レプリカ セットがあり、すべてではありませんがほとんどの状況で使用するようにコーディングされた node.js アプリケーションがあります。
サーバー上で、読み取り設定がさまざまなクエリに対して意図したとおりであることを確認したいと思います。現在の ops またはプロファイリングを表示するときに、クエリが実行された読み取り設定を確認する方法はありますか?
mongodb - MapReduce を試した後、ReplSet の MongoD が起動しない
プライマリの mongo シェル内で MapReduce を練習していたときに、突然セカンダリになりました。他の 2 つの VM と他のセカンダリに SSH で接続したところ、mongod が動作不能になっていることがわかりました。私はそれらを殺し、それらmongod --config /etc/mongod.conf
をキックオフするために発行し、mongo
シェルに入りました。数秒後、次のように中断されました。
これは、(レプリカセット内の 2 つの元のセカンダリ) ログからのものです。
mongo --host ... --port ...
mongo を起動できない 2 つの VM の両方から元のプライマリ mongo に発行できますが、上記のエラー ログにいくつかの接続拒否のメモが表示されます。
元のプライマリ mongod は引き続きmongo
シェルで接続できますが、これはプライマリです。強制終了して再起動すると、セカンダリで起動します。
既知の最後の状態にロールバックして、レプリカ セットを再開するにはどうすればよいですか?
mongodb - mongodb シャーディング ユーザー認証
まったく新しいシャード MongoDb (3 つの構成サーバー、3 つのノードのレプリカ セット) をセットアップしました。オンラインのドキュメントに従いましたが、実際には問題はありませんでした。データベースとコレクションを分割しました。mongos はシステムに接続します。それはすべてうまくいっています。
私が把握していないことの 1 つは、シャード システムでの認証のしくみです。6 つのノードすべてにキーファイルを設定しました。ユーザーを追加したいときは、mongos から行うのですか? レプリカ セットの各ノードにログインし、ユーザーも追加する必要がありますか? ユーザーを構成サーバーに追加する必要がありますか?
特に、mongos を介して MMS ユーザーを作成しました。これにより、mms-monitoring-agent がさまざまなサーバーについて十分に認識できるようになりました。しかし、実際にはそれらのいずれからもデータを読み取ることはできません。次のようなエラーが表示されます。
mongos 経由で接続して admin を使用すると、私が見ているユーザーを表示:
ユーザーを追加する必要があるインスタンスを理解していないだけだと思います。
mongodb - 2 台のサーバーのみを使用して MongoDB でレプリカ セットを操作する最良の方法
MongoDB を使用する実稼働環境に 2 サーバー ソリューションを使用します。
私の理解が正しければ、各サーバーに 1 つずつ、2 つのノードを持つ 1 つのレプリカ セットを持つことができます。フォールト トレランスが新しいプライマリ ノードを再割り当てするには、アービター ノードが必要です。
引き続き 2 つのサーバーを使用したいので、アービター ノードを保持しているサーバーがダウンした場合、新しいプライマリを設定する方法がありません。
私が思いついた解決策は、3 つのアービター ノードを持つことです。1台のサーバーに1台、もう1台に2台。そうすれば、いずれかのサーバーがダウンした場合、他のサーバーの非アービター ノードがプライマリになります。
これは正しいです?別のソリューションを使用する必要がありますか?
ありがとう!イグナシオ。
mongodb - MongoDB レプリカ セットとデータ複製
私は MongoDB を初めて使用し、レプリカ セットを理解しようとしています。具体的には、MongoDB が次の状況をどのように処理するかを理解しようとしています。
- レコードは、プライマリ Mongo メンバー (Mongo 1) の一意のインデックスを持つテーブルに書き込まれます。
- Mongo #1 は、新しいレコードがセカンダリ Mongo メンバー (Mongo 2) に伝達される前にクラッシュします。
- Mongo 2 とアービターは、Mongo 2 をプライマリとして選択します。
- アプリケーションは、テーブルに重複するレコードを作成しようとします。Mongo 2 は Mongo 1 に書き込まれたレコードを認識しないため、一意の制約は適用されません。
- Mongo 1 が再び使用可能になり、レプリケーションが再開されます。
次は何が起こる?Mongo 1 はレコードを Mongo 2 に複製しようとしますか? またはMongo 2からMongo 1へ?それとも両方同時に?紛争はどのように解決されますか?
mongodb - Mongodb レプリカ セット構成で _id を更新する方法は?
レプリカ セットには 5 人の mongo メンバーがいました。そこから3を削除した後。
他のメンバーの「_id」を値「0」、「1」、「2」に変更するにはどうすればよいですか?
node.js - MongoDB - レプリカ セットのステップ ダウンを真にシームレスにする方法
問題は、アプリケーションの実行中にレプリカ セットが強制的に停止されると、メインストリームのすべての Mongo クライアントが接続ごとに少なくとも 1 つの例外をスローすることです。これは、データベース接続が、以前はプライマリであった物理サーバーに固定接続されており、クエリを受け入れなくなったために発生します。そのため、MongoDB アーキテクトは StepDown プロセスによってダウンタイムが発生しないと考えるかもしれませんが、実際には、MongoDB のドキュメントに従って接続を処理すると、各ステップ ダウンによって少なくとも 1 人のユーザーに本格的なクラッシュが発生し、データの整合性が作成されることさえあります。問題。これは、いくつかの特定の Mongo 例外をキャプチャし、Replica Set に自動的に再接続して失敗したクエリを再実行することによってそれらを処理する単純なラッパーで回避できることを願っています。これに対する解決策が既にある場合は、共有してください。
mongodb - mongo replicaSet のメンバーは +100 CPU でまだ正常です
(EC2 に) 3 つのメンバーを持つ標準的な mongoDB レプリカ セットがあります。すべて正常に動作しますが、プライマリの CPU が 100 を超えることがあります。しかし、そうはなりません。
インスタンスをシャットダウンすると、選挙が正常に機能するため、ネットワーク経由でアクセスできない場合にのみ、mongo が異常と見なすと思います。
Cloudwatch を使用すると、CPU アラームがトリガーされたときにイベント (インスタンスの停止/再起動) を設定できますが、これは解決策というより回避策だと思います。
では、mongodb がメンバーを不健康と見なすのはいつですか?