問題タブ [mongodb-replica-set]

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.

0 投票する
0 に答える
645 参照

node.js - ノード Mongodb エラー: 有効なレプリカセット インスタンス サーバーが見つかりません

異なるポートの AWS インスタンスで複数の API を実行しています。API の 1 つで、「有効なレプリカセット インスタンス サーバーが見つかりません」というエラーが発生します。他の API は正常に動作しています。mongodb ログにメッセージがありません。タイムアウトの増加など、stackoverflowに記載されている他のすべてのオプションを試しましたが、役に立ちませんでした。

ローカル サーバーで実行すると、同じ API が適切に動作します。AWS インスタンスを再起動すると、正常に動作するようになりました。

問題を再現できません。根本原因を確認するための任意の方向。再発は避けたいものです。根本的な原因を見つけるためにさらに調査する領域をいただければ幸いです。

0 投票する
2 に答える
261 参照

mongodb - フェイルオーバーおよびリカバリ後のreplicaSet dbステータス

私のmongodbのバージョンは3.2.4です。2 つのデータベース ノードと 1 つのアービターを持つレプリカ セットがあります。私の顧客サイトでは、すべてのデータベースが長時間正常に動作しています。ある日、プライマリ データベースがメンテナンスのためにダウンしました。約 2 時間後、-was-primary は元に戻り、再びプライマリになり、セカンダリ データベースはロールバック状態になります。上記のシナリオに関していくつか質問があります。プライマリ データベースが初めてダウンしたとき、セカンダリ データベースに同期されていないデータベース エントリがある場合、どうなりますか? 障害が発生したプライマリが再び起動したとき、それは正しくプライマリになりますか? 再びプライマリ データベースになる前に、現在のプライマリ データベースはセカンダリ データベースと同期しますか? 最新のプライマリ データベースとセカンダリ データベースの状態を考慮して、ロールバック フォルダ内の失われたデータを回復するにはどうすればよいですか? ありがとうございます。

0 投票する
1 に答える
172 参照

mongodb - Mongo プライマリ ステップダウンと選出中に、Mongo クラスタへの書き込みリクエストがどうなるか

MongoDB レプリカ セット (たとえば、1 つのプライマリ、2 つのセカンダリ) に常に書き込みを行うアプリケーションがあります。

私が疑問に思っているのは、現在のプライマリーを強制的に辞任させると、新しいプライマリーの選挙が完了するまでに数秒かかる可能性があることです。

しかし、この選出プロセス中に MongoDB への書き込み要求がまだある場合、書き込み要求はどうなるでしょうか?

私が理解しているように、読み取り要求は問題ありませんが、すべての書き込みはプライマリを通過する必要があります。しかし、クラスターにクラスターがない場合、書き込み要求はキューに入れられるか、ドロップされますか?

https://docs.mongodb.com/manual/reference/method/rs.stepDown/ https://docs.mongodb.com/manual/core/replica-set-elections/

0 投票する
1 に答える
2083 参照

node.js - 有効な mongo レプリカセットをセットアップする方法

レプリカ モードの MongoDB がいくつかあるシナリオを検討したいと思いますが、特殊なケースでは、動作しているのは 1 つだけです。私の構成は次のようなものです。

EC2 インスタンスに MongoDB コンテナがあります。コマンドは次のとおりです。

次に、このデータベースを使用する Nodejs によって開発された 2 つのアプリケーションがあります。次の接続文字列で接続します。

uri: 'mongodb://192.168.0.100:27018/testmongo?replicaSet=rs0'

残念ながら、私のアプリケーションの 1 つが正常に機能しますが、他のアプリケーションは機能しません。データベースに接続しようとしたときのエラーメッセージは

MongoDB 接続エラー: MongoError: 有効なレプリカセット メンバーが見つかりません

このコマンドを実行してステータスを確認したrs.slaveOk()後、rs.status()これを持っています

このシナリオの設定は正しいですか? 正しくない場合、どうすれば修正できますか?

0 投票する
1 に答える
4776 参照

node.js - Mongo レプリカ セットでプライマリが見つからない

docker を使用して mongo レプリカ セットをセットアップするチュートリアルを見つけました。私のコマンドは

ネットワーク クラスタを作成する

という名前の特定のコンテナを作成し、mongo1内部で 27018 から 27017 をマップし、名前を設定しますrs0

私の構成、

最終的に、3つのコンテナを作成しました

の結果sudo docker exec -it mongo1 mongo

プライマリがあり、コンテナ (mongo1 など) に何かを挿入しようとしたように見えますが、MongoDB はうまく同期できます。

今、コマンドでデータベースのセットに接続しようとしましたbryan(メモ10.145.168.151は私のIPです)

私の結果は

Nodejs (マングース) を使用すると、MongoError: no primary found in replicaset

問題は私の質問だと思うgetaddrinfo("mongo2") failed: Name or service not knownので、これを修正する方法です。ありがとうございました

0 投票する
1 に答える
43 参照

php - mongo に新しいメンバーを追加し、アプリケーションでエラー例外を防止する

EC2 に 3 つのインスタンスがあり、それぞれにサービス mongo があり、レプリカ セット、つまりプライマリ (192.168.1.1)、セカンダリ (192.168.1.2)、アービター (192.168.1.3) が設定されています。

mongo に接続するアプリケーションがいくつかあります。

私の質問は次のとおりです。

レプリカに別のメンバーを追加する場合、接続セットアップ内のすべてのアプリケーションを変更して新しいメンバーを含める必要がありますか?

って聞くから。

最後の IP .1 がプライマリ、.2 がセカンダリであると仮定し、新しいメンバーを最後の IP .4 に追加します。そして、この新しいメンバーをアプリケーション データベースの設定に含めません。プライマリが落ちると、アービターは .4 の ip を新しいプライマリとして選択します。すべてのアプリケーションが例外をスローし始めます。

アプリケーションデータベースの構成を変更する必要がなく、常に新しいメンバーを追加する必要があるように、どのように「修正」できますか。「n」個のメンバーを追加する必要があると想像してください。

私のアプリケーションが PHP であることを知っていて、ホスト構成を追加せずにプライマリのみを識別するようにアプリケーションを構成する方法はありますか?

0 投票する
2 に答える
5324 参照

node.js - javascriptを介してmongodbに設定されたセカンダリレプリカから読み取る

2 つの異なるサーバー (1 つのプライマリと他のセカンダリ) で実行されている 2 つの mongo インスタンスがあります。次の接続コードを使用して、プライマリ サーバーからドキュメントを取得できます。

しかし、セカンダリ サーバーからドキュメントを取得しようとすると、次のエラーが発生します。

{ [MongoError: not master and slaveOk=false]
name: 'MongoError',
message: 'not master and slaveOk=false',
ok: 0,
errmsg: 'not master and slaveOk=false',
code: 13435 }

私もコードを使ってみました:

私は何が欠けていますか?