181 votes

Comment arrêter la base de données mongo en une seule commande

Je dois être en mesure de démarrer/arrêter MongoDB sur le client. Le démarrage est assez simple :

./mongod

Mais pour arrêter la base de données mongo, je dois d'abord lancer le shell ouvert de mongo, puis taper deux commandes :

$ ./mongo

utiliser l'administration

db.shutdownServer()

Je ne sais donc pas comment arrêter la base de données mongo en une seule ligne. Vous pouvez m'aider ?

273voto

Mark Hillick Points 3032

Démarrage et arrêt de MongoDB est couverte dans le manuel de MongoDB. Il explique les différentes options permettant d'arrêter MongoDB via le shell, le cli, les pilotes, etc. Il détaille également les risques d'un arrêt incorrect de MongoDB (comme la corruption de données) et parle des différents signaux d'arrêt.

De plus, si vous avez installé MongoDB à l'aide d'un gestionnaire de paquets de Ubuntu o Debian alors vous pouvez arrêter mongodb (actuellement mongod dans ubuntu) comme suit :

  • Upstart : sudo service mongod stop

  • Sysvinit : sudo /etc/init.d/mongod stop

Ou sur Mac OS X

Ou sur Red Hat systèmes basés sur la technologie :

  • service mongod stop

Ou sur Windows si vous l'avez installé comme un service nommé MongoDB :

  • net stop MongoDB

Et s'il n'est pas installé comme un service (à partir de Windows 7+), vous pouvez l'exécuter :

  • taskkill /f /im mongod.exe

Pour en savoir plus sur les problèmes d'un arrêt non nettoyé, sur la meilleure façon d'éviter un tel scénario et sur ce qu'il faut faire en cas d'arrêt non nettoyé, veuillez consulter : Récupérer des données après un arrêt inattendu .

115voto

Stennie Points 19196

Si vous voulez littéralement un équivalent en une ligne des commandes de votre question initiale, vous pouvez utiliser un alias :

mongo --eval "db.getSiblingDB('admin').shutdownServer()"

La réponse de Mark sur le démarrage et l'arrêt de MongoDB via les services est l'approche administrative la plus typique (et recommandée).

56voto

francoisrv Points 172

mongod --dbpath /path/to/your/db --shutdown

Plus d'informations sur le site officiel : http://docs.mongodb.org/manual/tutorial/manage-mongodb-processes/

36voto

Nanhe Kumar Points 2207

Si le serveur est exécuté en tant que processus de premier plan dans un terminal, cela peut être fait en appuyant sur

Ctrl-C

Une autre façon d'arrêter proprement un serveur en cours d'exécution est d'utiliser la commande shutdown,

> use admin
> db.shutdownServer();

Sinon, une commande comme kill peut être utilisée pour envoyer le signal. Si le PID de mongod est 10014, la commande serait la suivante

kill -2 10014

23voto

Victor Points 572

J'ai suivi la procédure officielle Documentation MongoDB pour s'arrêter avec les signaux. Il est possible d'utiliser l'une des commandes suivantes (PID représente les Process ID de la mongod processus) :

kill PID

qui envoie le signal 15 (SIGTERM), ou

kill -2 PID

qui envoie le signal 2 (SIGINT).

Avertissement de Documentation MongoDB :
Ne jamais utiliser kill -9 (c'est-à-dire SIGKILL) pour mettre fin à une opération de mongod instance.

Si vous avez plus d'une instance en cours d'exécution ou si vous ne vous souciez pas du PID, vous pouvez utiliser pkill pour envoyer le signal à tous les mongod processus :

pkill mongod

ou

pkill -2 mongod

ou, beaucoup plus sûr, uniquement aux processus qui vous appartiennent :

pkill -U $USER mongod

ou

pkill -2 -U $USER mongod

NOTE : Si la base de données est exécutée sous un autre utilisateur, mais que vous avez des droits d'administrateur, vous devez invoquer les commandes ci-dessus avec sudo afin de les exécuter. Par exemple :

sudo pkill mongod
sudo pkill -2 mongod

PS

Note : J'ai eu recours à des signaux parce que mongod --shutdown bien qu'elle soit mentionnée dans l'actuel Documentation MongoDB n'a pas fonctionné sur ma machine (macOS, mongodb v3.4.10, installé avec l'option homebrew ):

Error parsing command line: unrecognised option '--shutdown'

Mise à jour 2022-05-10

entre-temps, option --shutdown est marqué dans la documentation comme " Supported on Linux only ".

PPS

(spécifique à macOS) Avant que quelqu'un ne se demande : non, je n'ai pas pu l'arrêter avec la commande

brew services stop mongodb

parce que je n'ai pas commencé par

brew services start mongodb

J'avais commencé mongod avec une ligne de commande personnalisée :-)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X