HOWTO · MongoDB
MongoDB herunterfahren/stoppen
Dieser Artikel erläutert die verschiedenen Methoden zum Herunterfahren von MongoDB.
Auf dieser Seite
Welche Methode zum Herunterfahren von MongoDB geeignet ist, hängt davon ab, wie der Server verwaltet wird. Verwenden Sie die Datenbank-Shell, wenn Sie sich mit dem Server verbinden können, bei einer dienstverwalteten Bereitstellung die Dienststeuerung des Betriebssystems und bei einem im Vordergrund laufenden mongod das steuernde Terminal. Prozesssignale sind nur der letzte Ausweg, da sie den falschen Prozess beenden oder ein geordnetes Herunterfahren unterbrechen können. Wählen Sie die Methode, die dazu passt, wie diese Instanz gestartet wurde.
Wählen Sie die Shutdown-Methode für Ihre Bereitstellung
Ermitteln Sie zunächst, wie der Zielserver ausgeführt wird. Wird er von einer Administration oder einem Bereitstellungstool als Dienst verwaltet, verwenden Sie dieselbe Dienstverwaltung. Haben Sie mongod in einem Terminal gestartet, beenden Sie ihn dort. Wenn Sie eine autorisierte Verbindung zur Datenbank-Shell haben, verwenden Sie die unten beschriebene Shutdown-Methode über die Datenbank-Shell. Vermischen Sie die Methoden nicht ohne Weiteres: Wenn Sie beispielsweise einen dienstverwalteten Prozess direkt beenden, kann die Dienstverwaltung den Status des Dienstes möglicherweise nicht mehr korrekt anzeigen.
Vergewissern Sie sich vor dem Eingreifen, dass Sie die vorgesehene Instanz von MongoDB identifiziert haben und über die für ihre Bereitstellung erforderlichen Zugriffsrechte verfügen. Dieser Artikel legt keine bestimmten Shell-Aufrufe, Dienstnamen, Betriebssystembefehle oder Zugriffsanforderungen fest. Diese hängen von der jeweiligen Umgebung ab und müssen anhand ihrer Konfiguration geprüft werden.
MongoDB über eine Datenbank-Shell herunterfahren
Verwenden Sie db.shutdownServer() in einer Datenbank-Shell, um das Herunterfahren anzufordern. Prüfen Sie zuvor, wie die Shell in Ihrer Bereitstellung gestartet und die Verbindung hergestellt wird. Vergewissern Sie sich, dass die Verbindung zum vorgesehenen Server führt und die nötigen Berechtigungen besitzt. Prüfen Sie außerdem anhand der Syntax für Ihre MongoDB-Version, ob die Methode unterstützt wird.
Eine Anfrage über die Shell ist sinnvoll, wenn Sie einen Server über seine Datenbankschnittstelle statt über die Dienstverwaltung des Betriebssystems stoppen müssen. Kann die Anfrage den vorgesehenen Server nicht erreichen oder ist sie nicht autorisiert, wechseln Sie nicht sofort zu einem allgemeinen Befehl zum Beenden von Prozessen. Prüfen Sie die Verbindungs- und Zugriffskonfiguration der Bereitstellung oder verwenden Sie den Steuerungsweg, über den diese Instanz verwaltet wird.
Einen MongoDB-Dienst über das Betriebssystem stoppen
Verwenden Sie bei einer dienstverwalteten Bereitstellung die Dienststeuerung des Betriebssystems und die auf diesem Host konfigurierte Dienstidentität. Der genaue Befehl und Dienstname hängen vom System und der Installation ab; hier wird kein einzelner Befehl als aktuell oder allgemein gültig bestätigt. Prüfen Sie die Dienstkonfiguration des Hosts oder fragen Sie die zuständige Administration. Senden Sie die Stoppanforderung anschließend über diese Dienstverwaltung.
So bleibt die Shutdown-Anforderung auf den Dienst abgestimmt, der MongoDB startet und überwacht. Ersetzen Sie einen unbekannten Dienstbefehl nicht einfach durch einen Befehl, der Prozesse anhand ihres Namens beendet. Meldet die Dienstverwaltung einen Fehler, prüfen Sie, ob Sie den richtigen Dienst ausgewählt haben und über die erforderlichen Berechtigungen verfügen, bevor Sie einen anderen Steuerungsweg versuchen.
Einen im Vordergrund laufenden mongod-Prozess stoppen
Ist mongod an ein Terminal angehängt, das Sie steuern, beenden Sie ihn über dasselbe Terminal. Sie können Ctrl+C nur verwenden, wenn das steuernde Terminal diese Tastenkombination für diesen Vordergrundprozess als Unterbrechung interpretiert. Ob das der Fall ist, hängt vom Terminal und davon ab, wie Sie mongod gestartet haben. Verwenden Sie die Steuerungsmöglichkeit, die die Vordergrundumgebung bereitstellt, und warten Sie, bis der Prozess beendet ist. Schließen Sie nicht einfach das Terminal, um eine Shutdown-Anforderung zu ersetzen.
Diese Methode gilt für einen Vordergrundprozess, nicht automatisch für einen Dienst oder einen Prozess in einer anderen Sitzung. Ist das Terminal nicht verfügbar, ermitteln Sie die tatsächliche Verwaltungsinstanz der Bereitstellung, bevor Sie eine andere Methode wählen.
Prozesssignale nur verwenden, wenn geordnete Steuerungsmöglichkeiten nicht verfügbar sind
Verwenden Sie ein Prozesssignal nur, wenn der reguläre Weg über Datenbank-Shell, Dienstverwaltung oder steuerndes Terminal nicht verfügbar ist und Sie den genauen mongod-Prozess identifizieren können. Ein Signal an die falsche PID kann ein anderes Programm beenden; allgemeine Befehle, die Prozesse anhand ihres Namens auswählen, können mehr als eine Instanz von MongoDB betreffen. Senden Sie das Signal nicht an jeden Prozess mit übereinstimmendem Namen und gehen Sie nicht davon aus, dass ein Signal in jeder Bereitstellung dasselbe Shutdown-Verhalten auslöst.
Können Sie den vorgesehenen Prozess nicht sicher identifizieren oder die Wirkung des Signals nicht einschätzen, halten Sie an und bitten Sie die Systemadministration, den konfigurierten Steuerungsweg zu verwenden. Erzwingen Sie das Beenden nicht, nur weil eine geordnete Anforderung Zeit benötigt. Prüfen Sie zuerst den Status über die eigenen Steuerungsmöglichkeiten der Bereitstellung.
Herunterfahren prüfen und häufige Probleme beheben
Prüfen Sie das Ergebnis über dieselbe Schnittstelle, über die die Instanz verwaltet wird: bei einem Dienst über die Dienstverwaltung, bei einem Vordergrundprozess über das steuernde Terminal oder über die etablierte Status- oder Zustandsanzeige der Bereitstellung. Vergewissern Sie sich, dass sich der angezeigte Status auf den vorgesehenen Server bezieht. Eine gesendete Anforderung bestätigt für sich genommen nicht, dass die richtige Instanz beendet wurde.
Scheint der Server weiterhin aktiv zu sein, prüfen Sie, ob Sie die richtige Instanz ausgewählt haben und der gewählte Steuerungsweg über die erforderlichen Zugriffsrechte verfügt. Ist die reguläre Steuerungsmöglichkeit nicht verfügbar, verwenden Sie die oben beschriebene Ausweichmethode nur, wenn deren Voraussetzungen erfüllt sind. Ein abruptes oder fehlerhaftes Herunterfahren kann Probleme verursachen. Bevorzugen Sie daher die geordneten Steuerungsmöglichkeiten der Bereitstellung und beenden Sie keine Prozesse, die Sie nicht eindeutig identifiziert haben.