問題タブ [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 - MongoDB の書き込み懸念はスレッドレベルでどのように機能しますか?
アプリケーションから書き込み懸念を設定できることがわかったので、MongoDB は次のようなシナリオをどのように処理するのだろうかと考えていました。
2 つのタスク/プロセス (P1 と P2) が同じデータベースで実行されているとします (データベースには、1 つのプライマリ ノードと 2 つのセカンダリ ノードの 3 つのノードのレプリカ セットがあります)。P1 では、ジャーナル レベルで有効な書き込み懸念があります。P2 では、レプリカ レベル (セカンダリ レベル) で有効な書き込み懸念があります。
P1 と P2 の両方がデータベースに書き込むとどうなるでしょうか?
P2 は、P1 によって書き込まれたデータがセカンダリにコピーされるのを待ってから、そのデータをセカンダリに書き込みますか?
またはそれをどのように処理しますか?
mongodb - DC 障害時の自動プライマリ選択のための MongoDb レプリカセット (2 DC) の推奨構成は何ですか?
2 つのデータ センターに mongo ノードを分散する必要があります。
フォールトトレランステーブルに少し混乱しています:
メンバー数 = 4
新しい予備選挙の選出に必要な過半数 = 3
数字の 4 は、合計 5 人の投票メンバーが必要であることを意味しますか、それとも 3 人の投票メンバーと 1 つの優先度 0 の非公開メンバーを持つことができますか?
例えば :
- DC1 : P、H (優先度=0)
- DC2 : 小、小
DC1 が停止した場合、DC2 はプライマリを選択しますか?
DC2 がダウンしている場合、H をアービトラーに変換する必要がありますか?それともプライマリのままになりますか?
基本的に、DC 障害時に自動プライマリ選択 (最小限の手作業での選択) を保証する 2 つの DC 用のレプリカセットの推奨構成を誰かが提供できれば、それは素晴らしいことです。
よろしくお願いします、 カニスカ
node.js - NodeJS ネイティブ ドライバーを使用して MongoDB データベースに接続できない
私は、MongoDB データベースに接続する必要がある NodeJS アプリを持っています。次のものに問題なく接続しますが、2番目のものに接続すると、次のエラーが発生します。
接続に使用するコード (ユーザー名と実際の URL を省略した後) は次のとおりです。
今、これを単独で試したとき(コードが他のDBに接続した後ではありません)、うまくいきました...何かアイデアはありますか?
c# - C# ドライバーを使用した MongoDB Replicaset 接続文字列
私の Mongo DB セットには 3 つのレプリカ セットがあります。1 つのプライマリと 2 つのセカンダリです。
以下の接続文字列を使用してコードを実行すると、レコードの挿入に問題はありません
しかし、問題は、レプリカ セット上にあるため、プライマリが 27019 から 27018 になるか、27017 の挿入が失敗すると、プライマリが変化し続けることです。
そこで、接続文字列をより本物のレプリカ セットの接続文字列に変更しようとしました。
「そのようなホストはありません」または「メンバーに接続できません」で失敗し続けますが、同じコード行でコレクションのリストを取得すると機能します(つまり、読み取りは機能し、挿入または保存コマンドのように書き込みのみが失敗します)
MongoDB 2.6.4を使用しています
rs.status()
rs.config()
mongodb - アービターを使用した MongoDB レプリカ セット
2 つのレプリカと 1 つのアービターを使用して MongoDB 3.0 でレプリカ セットを構成しようとしていますが、期待どおりに動作しません。次の図でわかるように、各インスタンスは同じレプリカ セットの異なるステータスを示します。
次の構成を使用しました。
アービター:
- dbpath=/mongo-メタデータ
- logpath=/var/log/mongodb/mongod.log
- logappend=真
- ポート=27017
- replSet=rs0
- フォーク=真
- nojournal=真
Mongo0 :
- dbpath=/mongo-メタデータ
- logpath=/var/log/mongodb/mongod.log
- logappend=真
- ポート=27017
- replSet=rs0
- フォーク=真
モンゴ1:
- dbpath=/mongo-メタデータ
- logpath=/var/log/mongodb/mongod.log
- logappend=真
- ポート=27017
- replSet=rs0
- フォーク=真
各サーバーにpingを実行しようとしましたが、すべて接続されています。また、キーファイルを使用しようとしましたが、何も変わりませんでした。私が間違っていることは何ですか?
編集: この投稿を次の場所に移行しました: https://dba.stackexchange.com/questions/94730/mongodb-replica-set-with-arbiter
mongodb - MongoDB でセカンダリ ディスクのサイズを縮小しないシャードを追加する
私の会社はmongoDBをデータベースとして使用しています。
現在、ディスクの値が 70% 以上増加すると、シャードを追加するためのスクリプトを作成しています。
正常に動作しており、しきい値の 70% に達した後、シャードを 1 つ追加しています。
問題は、シャードを追加しても、古いシャードのファイル サイズが mongo ドキュメントにも記載されているように縮小されないことです。
そのため、mongos に接続して db.repairDatabase を実行すると、問題なく動作し、古いシャードのファイル サイズが縮小されます。
私たちが直面している最大の問題は、repair Database コマンドがセカンダリ シャードではなく、プライマリ シャードのストレージのみを縮小することです。
自動化のために、セカンダリ シャードも縮小する必要があります。
mongoDB セカンダリ ノードも縮小するコマンドはありますか?
再同期はしたくありません: あまりにも長く退屈な作業です...
mongodb - errmsg" : "レプリカ セット rs0 の新しい構成 1 に記述されているホストがこのノードにマップされていません"、なぜこのメッセージが表示されるのですか?
毎回このメッセージが表示されますrs.initiate()
:
レプリカ セット rs0 の新しい構成 1 に記述されているホストがこのノードにマップされていません
これは、私の/etc/hosts/ファイルが両方のレプリカ セット サーバーでどのように見えるかです。
サーバー 1 およびサーバー 2 の「hosts」ファイル
127.0.0.1 ローカルホスト
aa.bb.cc.dd DataMongo1
ee.ff.gg.hh DataMongo2
サーバー 1-mongod.conf ファイル
bind-ip aa.bb.cc.dd
サーバー 2 -mongod.conf ファイル
bind-ip ee.ff.gg.hh
server1 のホスト名を DataMongo1 に、server2 を DataMongo2 に変更しました
$ホスト名 DataMongo1
ポート 27071 は両方のサーバーでコメント解除されています
ReplicaSet構成ファイル:
cfg= {
_id:"rs0",
members:[{_id:0,host:"DataMongo1:27071"},{_id:1,host:"DataMongo2:27071"}]}
この問題で私を助けてください。
c# - MongoDB のレプリカ セットに複数の書き込み懸念を設定できますか?
たとえば、w = "majority" として 3 つのメンバーを持つレプリカ セットに書き込み懸念を設定したとします。レプリカ セットのメンバーがダウンした場合、そのようなシナリオで書き込みの懸念が変わる可能性はありますか?
MongoDB: The definitive guide と MongoDB のドキュメントを読みましたが、何も見つかりませんでした。しかし、実装できるようにする必要があるようです。
mongodb - Heroku にリストされている MongoDB データベース URI にはレプリカ セット オプションがあるのに、MongoLab にはリストされていないのはなぜですか?
Heroku を介して MongoLab に MongoDB データベースをセットアップします。レプリカ セット クラスターではなく、無料の単一ノードのサンドボックス プランを選択しました。
MongoLab の私のデータベースのページには、データベースに接続するための次の URI が表示されます。
Heroku はMONGOLAB_URI
、[設定] セクションの [構成変数] の下に同じものをリストしますが、それにレプリカ セット オプションを追加します: ?replicaSet=rs-ds012345
.
mongod がレプリカ セットのメンバーである場合、レプリカ セット オプションはレプリカ セットの名前を指定することを理解しています。
MongoLab でデータベースをセットアップするときにレプリカ セットのクラスター プランを選択しなかったようですが、Heroku のMONGOLAB_URI
構成変数がデータベースがレプリカ セットのメンバーであることを示しているように見えるのはなぜですか?
Node.js と Express で構築されたアプリでは、どの URI を使用する必要がありますか?