MongoDB副本集问题
PHPz
PHPz 2017-04-24 09:11:00
0
2
829

假设有这样一个场景,有一个MongoDB的副本集,由于故障导致只剩下两个节点可用,而这两个节点目前都是slave节点。其他的故障节点也无法再重新启动,即无法重新加入到副本集中。
Q:这种情况下是否因为这个副本集就无法使用了?

PHPz
PHPz

学习是最好的投资!

全員に返信(2)
Ty80

ほとんどのノードがダウンし、相互に接続できる残りのノードの数が半分を超えない場合は、ドキュメントを参照してレプリカ セットを再構成できます:
- http://docs.mongodb.org/manual/tutorial/reconfigure-replica-set-with-unavailable-members/

ドキュメントには 2 つの方法が記載されています:

  1. 1 つは、このレプリカ セットを強制的に再構成し、ダウンしているノードをこのレプリカ セットから削除し、残りの実行中のノードのみが新しいレプリカ セットを形成して、新しいプライマリ ノード (プライマリ ノード) を選択できるようにすることです。 MongoDB のバージョンが 2.0 以降の場合、この方法を使用できます。
  2. もう 1 つの方法は、このレプリカ セットを交換することです。 MongoDB のバージョンが 2.0 未満の場合は、この方法を使用できます。
いいねを押す +0
迷茫

これは、レプリカ セット内のノードの合計数に依存します。レプリカ セット内で相互に接続できるノードの数がノードの合計数の半分を超える場合、新しいプライマリ ノードを選択できます。レプリカ セットは正常に動作します。相互に接続できる場合、ノードがサマリー ポイントの半分以下の場合、すべてのノードがセカンダリ ノードになります。この時点で、レプリカ セットは読み取り専用になり、すべてのノードがセカンダリ ノードになります。書き込み操作は失敗します。

この現象の理由は、mongodb レプリカ セットが複数のプライマリ ノードを許可していないためです。接続できるノードの数がノードの総数の半分以下の場合でも、プライマリを選択できる場合は、複数のプライマリ ノードが表示される可能性があります。これにより、レプリカ セット全体でデータが混乱しますが、障害が発生したノードが復元されると、レプリカ セットは引き続き正常に実行されます。

プライマリを選択するのに十分ではない通常のノードが発生した場合は、いくつかの方法で解決できます。

リーリー

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート