問題タブ [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.

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

mongodb - ノードが 2 つだけの ReplicaSet

それぞれmongoインスタンスを持つ2つのサーバーがあります。

最初のサーバーではmongoインスタンスをプライマリとして設定し、2番目のmongoではセカンダリです。

別のサーバーを使用してアービターにする可能性はありません。

2台のサーバーだけでmongodbを使用するにはどうすればよいですか?

プライマリに障害が発生した場合、セカンダリは自動的にプライマリになりますか?

ありがとう!

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

node.js - mongodb レプリカ セットの構成バージョン エラー

Amazon クラウドで 3 台のマシンを実行しています。最初のプライマリセットを次のように設定しました

}

次に、2 台目のマシンが構成を自動同期します。ただし、3 台​​目のマシンは構成を同期せず、すべてが [secondary] になります。を使用して 3 台目のマシンの rs conf をセットアップしたときre.reconfig(conf, {force: true})。次のようなエラーを設定してスローしません

config version >= 新しい cfg バージョンへ。構成を変更できません

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

python - pymongo:監視スレッドが死んでいる場合はどうすればよいですか?

何らかの理由で、更新がスケジュールされたときに、ReplicaSet のモニターが停止しているように見えました。

find_one() の呼び出しで次の Traceback を取得しました。

コードを少し調べたところ、 Monitor.monitor() に次のものが含まれていることがわかりました。

つまり、どんな悪いことが起こったとしても、それが何であったかはわかりません。

InvalidOperation("Monitor thread is dead: おそらく fork の前に開始されましたか?") をキャッチした場合、どうすればよいですか?

Monitor インスタンスを再起動する良い方法はありますか?

(私はpymongo.version 2.6.2でflask-pymongoを使用しています)

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

mongodb - レプリカ セットへの MongoDB 接続文字列

http://mongodb.github.io/node-mongodb-native/driver-articles/mongoclient.htmlを見て、「デフォルトで確認応答を使用しないレプリカセット接続とセカンダリの readPreference 」セクションまでスクロールすると、

次のようなレプリカ セットへの接続文字列を示します。

を指定する必要がある理由がわかりません2 hosts。MongoDB のドキュメントには、レプリカ セットがクライアントに対して透過的であると既に記載されていると思いました。つまり、クライアントはプライマリ レプリカ セットに接続するだけで、MongoDB がその役割を果たします。したがって、接続にはホストが 1 つだけ含まれている必要があります。MongoDB doc には、少なくとも3 hostsレプリカ セットに存在する必要があり、この接続文字列のみが指定されている必要があると記載されています2 hosts

さらに、接続文字列に「replicaSet」が記載されていないのはなぜですか?

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

mongodb - mgo を使用してレプリカ セットに接続する

ポート 27017、27018、および 27019mtoolsで 3 つのノード ( ) を持つレプリカ セットを起動するために使用しています。mlaunch --replicaset

Dialただし、mgo パッケージを使用して実際にレプリカ セットに接続するのは困難です。以下のコード スニペットは、次のメッセージでパニックしますno reachable servers

mgo パッケージを使用してレプリカ セットに正確に接続するにはどうすればよいですか?

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

mongodb - レプリカセットでサービスmongodの開始が失敗する

私はmongod次のコマンドで始めています:

正常に動作し、レプリカ セットを構成できます。コマンドで起動しようとするmongodservice mongod start、次のエラーで失敗します。

データベースmongodの起動[失敗]

var/log/mongodb/mongodb.log/var/log/syslogまたはに誤りはありません/var/log/syslog.1

この回避策をmongodサービスとして実行することがわかりました。

mongod --port 27017 --dbpath /var/lib/mongodb/ --replSet rs0 --fork --logpath /var/log/mongodb/mongodb.logまたmongod --config /etc/mongod.conf

私はmongodb 2.6で実行しています。rs.initiate()うまくいきました。

と を追加fork = truereplSet = rs0ました/etc/mongod.conf

を使用して MongoDB を起動するにはどうすればよいservice mongod startですか?

0 投票する
4 に答える
28693 参照

node.js - レプリカ セットへのマングース接続

mongoose 経由で MongoDB replicaSet に接続しようとしました。このリンクを使用しました。
構成 json:

マングース接続:

そして、アプリケーションを起動した後、例外が発生しました:

データベース: チャット、プライマリ サーバー: localhost:27022。

また、他の2つのサーバーを削除しようとしました(構成jsonにプライマリサーバーのみを保持)。セカンダリサーバーについて認識していることがわかりました(ログを使用しました)。それはmongodbのメタデータに関するものだと思います。しかし、プライマリをシャットダウンすると、その作業が終了しました (不思議ではありません)。代わりにセカンダリを使用できるようにする必要があります。
何か案は?

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

mongodb - レプリケートされたシャード クラスタを作成しようとしたときに mongos を接続する際のエラー

mongodb でレプリケートされたシャード クラスターを作成しようとしています。最初に 2 つのシャードを作成し、各シャードに 3 つのメンバーを持つレプリカ セットがあります。また、すべてのシャードとレプリカセットが 1 台のマシンで実行されます。私はついていきます

この構造を展開し、それは完全に機能しました。

しかし、ビジネス アプリケーション用の AWS インスタンスで mongodb を実行していて、node.js サーバーをデータベースに接続しているので、複数の aws インスタンス内でデータベースの負荷を分散して、巨大な環境でもデータベースが正常に動作するようにしたいと考えています。トラフィックの負荷を軽減し、1 つのインスタンスが異常または使用不可になった場合でも、他のインスタンスで実行されているレプリカセットからデータベースにアクセスできます。

前の質問でのさまざまなユーザーの提案に応じて

データベースをシャードに分割しようとしていますが、各シャードには、別々の aws インスタンスで実行されている 3 つ以上のメンバーを持つレプリカ セットがあります。この構造を作成するために、最初はローカルにデプロイしようとしました。

私は2つのレプリカセットfirstsetとsecondsetを持っています

最初のセットには、192.168.1.10:27018 (プライマリ)、192.168.1.11.27018 (セカンダリ)、および 192.168.1.9:27018 (アービター) の 3 つのメンバーがあります。

2 番目のセットには 192.168.1.6:27019 (プライマリ)、192.168.1.9:27019 (セカンダリ)、192.169.1.11:27019 (アービター) の 3 つのメンバーがあります。

私が書いた最初のセットのレプリカを作成するには

192.168.1.10、192.168.1.11、および 192.168.1.9 で

次に、作成したレプリカ セットを開始します。

192.168.1.10 で、その後、

同様の方法でセカンドセットのレプリカを作成しましたが、うまくいきました。

次に、1 台のマシンがシャットダウンしても他の configsvrs が実行されるように、3 つの個別のマシンに 3 つの configsvr を作成しようとしました。configsvs は 192.168.1.10:27020、192.168.1.11:27020 & 192.168.1.6:27020 で実行されます。

だから私は書いた

192.168.1.10、192.168.1.11、および 192.168.1.6 で。

次に、27017 ポートの 192.168.1.10 で mongos を実行し、3 つの configdb を実行しようとしました。だから、私は書いた

次に、mongos にシャードを追加し、27017 ポートで実行中の mongos を追加する必要があるため、次のように記述しました。

でも映ってる

しかし、以前は単一のマシンでテストしていたときに完全に機能していました。

このエラーが発生する理由と解決方法を教えてください。

また、別の混乱があります。192.168.1.10 で mongos を実行していて、node.js サーバーをその mongos に接続しますが、そのマシンがシャットダウンすると問題が発生します。したがって、データベースとの接続をいつでもルーティングするために少なくとも1つのmongoが実行されるように、他のマシンでもmongoを実行する必要がありますか? 実行中の複数の mongos を別々のマシンで同時に作成する必要がある場合、node.js サーバーからいずれかの mongos を接続してデータベースにアクセスするにはどうすればよいですか?