
Ich habe einen MongoDB-Cluster mit 4 verschiedenen Replikatsätzen. Vor kurzem sind 2 Maschinen unwiederbringlich abgestürzt, die Daten sind vollständig verloren. Leider war auf diesen 2 Hosts 1 Replikatsatz installiert.
Mein Problem besteht darin, dass die Konfiguration immer noch angibt, dass sich einige Daten auf den Hosts dieses Replikatsatzes befinden. Wenn die Client-Anwendung versucht, aus dieser Sammlung zu lesen, die zufällig Chunks auf diesen Rechnern enthält, wird dieser Fehler zurückgegeben:
Für den festgelegten replicaSetShardServer4 konnte kein Host mit der Lesepräferenz { mode: "primary" } gefunden werden
Was Sinn macht, da diese beiden Server nicht mehr existieren.
Ich wollte also eine Möglichkeit finden, diese Server aus der Konfiguration zu entfernen, aber bei jedem Verfahren, nach dem ich suche, wird erwähnt, dass ich eine Verbindung mit dem primären Knoten des Replikationssatzes herstellen und Shards entfernen soll, was ich nicht tun kann, da diese Hosts dann wieder weg sind.
Antwort1
Ändern der Konfigurationsdatei und Kommentarzeilen
replication:
replSetName: ...
Starten Sie den Mongo-Dienst neu. Stellen Sie eine Verbindung zum Knoten her und löschen Sie die local
Datenbank.
db.getSiblingDB('local').dropDatabase()
Damit wird das ReplikatSet wieder zu einem eigenständigen MongoDB. Anschließend können Sie das ReplikatSet erneut konfigurieren, siehe:Konvertieren eines eigenständigen Mongod in ein Replikatset
Schauen Sie sich auch anWiederherstellen eines Replikationssatzes aus MongoDB-Backups, die Vorgehensweise ist die gleiche wie in Ihrem Fall – abgesehen vom ersten Schritt „Sicherungskopie der MongoDB-Datenbankdateien abrufen“ – dieser Schritt ist natürlich nicht erforderlich.