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 ?

11voto

Shawn Wang Points 321

Utilisez mongod --shutdown

Selon le document officiel : gérer-mongodb-processes/

D

8voto

Créer un fichier appelé mongostop.bat

enregistrez-y le code suivant

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

Exécutez le fichier mongostop.bat et vous avez réussi à arrêter mongo.

8voto

crifan Points 1242

Mon cas particulier est :

démarrer précédemment mongod par :

sudo -u mongod mongod -f /etc/mongod.conf

maintenant, je veux arrêter mongod .

et se référer au document officiel Arrêter les processus mongod a essayé :

(1) shutdownServer mais a échoué :

> use admin
switched to db admin
> db.shutdownServer()
2019-03-06T14:13:15.334+0800 E QUERY    [thread1] Error: shutdownServer failed: {
        "ok" : 0,
        "errmsg" : "shutdown must run from localhost when running db without auth",
        "code" : 13
} :
_getErrorWithCode@src/mongo/shell/utils.js:25:13
DB.prototype.shutdownServer@src/mongo/shell/db.js:302:1
@(shell):1:1

(2) --shutdown a toujours échoué :

# mongod --shutdown
There doesn't seem to be a server running with dbpath: /data/db

(3) la commande de démarrage précédente ajoutant --shutdown :

sudo -u mongod mongod -f /etc/mongod.conf --shutdown
killing process with pid: 30213
failed to kill process: errno:1 Operation not permitted

(4) utiliser service de s'arrêter :

service mongod stop

et

service mongod status

spectacle attendu Active: inactive (dead) mais mongod en fait toujours en cours d'exécution, on peut voir le processus avec ps :

# ps -edaf | grep mongo | grep -v grep
root     30213     1  0 Feb04 ?        03:33:22 mongod --port PORT --dbpath=/var/lib/mongo

et enfin arrêtez vraiment de passer :

# sudo mongod -f /etc/mongod.conf --shutdown
killing process with pid: 30213

jusqu'à présent, Cause profonde : encore inconnue ...

J'espère que la solution ci-dessus vous sera utile.

5voto

Pirira Points 1

One liners pour démarrer ou arrêter le service mongodb en utilisant la ligne de commande ;

  1. Pour démarrer le service, utilisez : NET START MONGODB
  2. Pour arrêter le service, utilisez : NET STOP MONGODB

Je l'utilise moi-même, ça marche.

5voto

David Fridley Points 41

Suite à la réponse de Stennie :

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

J'ai découvert que mongo essayait de se reconnecter à la base de données après l'arrêt du serveur, ce qui provoquait un retard et des messages d'erreur. L'ajout de quit() après l'arrêt accélère le processus et réduit les messages, mais il y en a toujours un.

Je veux également ajouter un contexte - je démarre et arrête mongod dans le cadre de cas de test pour d'autres codes, donc l'enregistrement en tant que service ne correspond pas au cas d'utilisation. J'espère aboutir à quelque chose qui fonctionne sur toutes les plates-formes (ceci est testé sous Windows pour le moment). J'utilise mongod 3.6.9.

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