ホームページ  >  に質問  >  本文

MongoDB副本集问题

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

PHPzPHPz2734日前781

全員に返信(2)返信します

  • PHP中文网

    PHP中文网2017-04-24 09:13:00

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

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

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

    返事
    0
  • 迷茫

    迷茫2017-04-24 09:13:00

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

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

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

    リーリー

    返事
    0
  • キャンセル返事