
4 つの異なるレプリカ セットを持つ mongoDB クラスターがあります。最近、2 台のマシンが回復不能な状態でクラッシュし、データが完全に失われました。残念ながら、これら 2 台のホストには 1 つのレプリカ セットがインストールされていました。
私が直面している問題は、構成では依然として一部のデータがこのレプリカ セット ホスト上にあることが示されており、クライアント アプリケーションがそれらのマシン上にチャンクがあるコレクションから読み取ろうとすると、次のエラーが返されることです。
replicaSetShardServer4 の読み取り設定 { mode: "primary" } に一致するホストが見つかりませんでした
これら 2 つのサーバーがなくなったので、それは理にかなっています。
そこで、構成からこれらのサーバーを削除する方法を見つけたいと思いましたが、探しているすべての手順では、レプリカ セットのプライマリ ノードに接続してシャードを削除するように記載されていますが、それ以降はこれらのホストが消えてしまうため、これを行うことができません。
答え1
設定ファイルとコメント行を変更する
replication:
replSetName: ...
Mongo サービスを再起動します。ノードに接続し、local
データベースを削除します。
db.getSiblingDB('local').dropDatabase()
これにより、ReplicaSet がスタンドアロン MongoDB に戻ります。その後、ReplicaSet を再度構成できます。以下を参照してください。スタンドアロンのmongodをレプリカセットに変換する
こちらもご覧くださいMongoDB バックアップからレプリカ セットを復元する最初のステップ「MongoDB データベース ファイルのバックアップを取得する」を除けば、手順はあなたのケースで必要な手順と同じです。もちろん、このステップは必要ありません。