mongodb - tutorial - Cómo detener mongo DB en un comando
mongodb ventajas y desventajas (14)
Necesito poder iniciar / detener MongoDB en el cli. Es bastante simple comenzar:
./mongod
Pero para detener mongo DB, necesito ejecutar primero mongo shell y luego escribir dos comandos:
$ ./mongo
use admin
db.shutdownServer ()
Así que no sé cómo detener mongo DB en una línea. ¿Alguna ayuda?
Windows
En PowerShell, es: Stop-Service MongoDB
Entonces para comenzarlo de nuevo: Start-Service MongoDB
Para verificar si se inició, ejecute: net start | findstr MongoDB
net start | findstr MongoDB
.
Nota: Más arriba asume que MongoDB está registrado como un servicio .
CTRL + C
en la línea de comandos de Windows
De los comandos dados, creo que estás en Linux.
Inicie MongoDB:
$ sudo service mongod start
mongod start/running, process XXXXX
Verifica el estado:
$ sudo service mongod status
mongod start/running, process XXXXX
Detener MongoDB:
$ sudo service mongod stop
mongod stop/waiting
Seguí la documentación oficial de MongoDB para detenerme con señales. Se puede usar uno de los siguientes comandos (PID representa la Process ID
del Process ID
mongod
):
kill PID
que envía la señal 15 (SIGTERM), o
kill -2 PID
que envía la señal 2 (SIGINT).
Advertencia de la documentación de MongoDB :
Nunca usekill -9
(es decir, SIGKILL) para terminar una instancia demongod
.
Si tiene más de una instancia en ejecución o si no le importa el PID, puede usar pkill
para enviar la señal a todos los procesos en ejecución de mongod
:
pkill mongod
o
pkill -2 mongod
o, mucho más seguro, solo a los procesos que le pertenecen:
pkill -U $USER mongod
o
pkill -2 -U $USER mongod
PD
Nota: recurrí a esta opción porque mongod --shutdown
, aunque mencionado en la documentación actual de MongoDB , curiosamente no funciona en mi máquina (macOS, mongodb v3.4.10, instalado con homebrew
):
Error parsing command line: unrecognised option ''--shutdown''
PPS
(MacOS específico) Antes de que alguien se pregunte: no, no pude detenerlo con el comando
brew services stop mongodb
porque no lo comencé con
brew services start mongodb
.
Empecé mongod
con una línea de comando personalizada :-)
Si el servidor se ejecuta como el proceso en primer plano en una terminal, esto se puede hacer presionando
Ctrl-C
Otra forma de cerrar limpiamente un servidor en ejecución es usar el comando shutdown,
> use admin
> db.shutdownServer();
De lo contrario, se puede usar un comando como kill para enviar la señal. Si mongod tiene 10014 como su PID, el comando sería
kill -2 10014
Si, literalmente, quieres una línea equivalente a los comandos en tu pregunta original, podrías alias:
mongo --eval "db.getSiblingDB(''admin'').shutdownServer()"
La respuesta de Mark para iniciar y detener MongoDB a través de los servicios es el enfoque administrativo más típico (y recomendado).
Un liners para iniciar o detener el servicio de mongodb usando la línea de comando;
- Para comenzar el uso del servicio:
NET START MONGODB
- Para detener el uso del servicio:
NET STOP MONGODB
Yo uso esto yo mismo, funciona.
Uso este script de inicio en Ubuntu.
#!/bin/sh
### BEGIN INIT INFO
# Provides: mongodb
# Required-Sart:
# Required-Stop:
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: mongodb
# Description: mongo db server
### END INIT INFO
. /lib/lsb/init-functions
PROGRAM=/opt/mongo/bin/mongod
MONGOPID=`ps -ef | grep ''mongod'' | grep -v grep | awk ''{print $2}''`
test -x $PROGRAM || exit 0
case "$1" in
start)
log_begin_msg "Starting MongoDB server"
ulimit -v unlimited.
ulimit -n 100000
/opt/mongo/bin/mongod --fork --quiet --dbpath /data/db --bind_ip 127.0.0.1 --rest --config /etc/mongod.conf.
log_end_msg 0
;;
stop)
log_begin_msg "Stopping MongoDB server"
if [ ! -z "$MONGOPID" ]; then
kill -15 $MONGOPID
fi
log_end_msg 0
;;
status)
;;
*)
log_success_msg "Usage: /etc/init.d/mongodb {start|stop|status}"
exit 1
esac
exit 0
crea un archivo llamado mongostop.bat
guarda el siguiente código en él
mongo admin --eval "db.shutdownServer()"
ejecuta el archivo mongostop.bat y tienes mongo detenido con éxito
en la ventana de la terminal de tu mac, presiona control + c
Arrancar y detener MongoDB está cubierto en el manual de MongoDB. Explica las diversas opciones de detener MongoDB a través del shell, cli, drivers, etc. También detalla los riesgos de detener incorrectamente MongoDB (como corrupción de datos) y habla sobre las diferentes señales de muerte.
Además, si ha instalado MongoDB utilizando un administrador de paquetes para Ubuntu o Debian , puede detener mongodb (previamente mongod) de la siguiente manera:
Upstart:
sudo service mongodb stop
Sysvinit:
sudo /etc/init.d/mongodb stop
O en Mac OS X
Encuentre el PID del proceso de mongod utilizando
$ top
Mata el proceso por
$ kill <PID>
( los documentos de Mongo tienen más información sobre esto )
O en los sistemas basados en Red Hat :
-
service mongod stop
O en Windows si se ha instalado como un servicio llamado MongoDB
:
-
net stop MongoDB
Y si no está instalado como un servicio (a partir de Windows 7+), puede ejecutar:
-
taskkill /f /im mongod.exe
Para obtener más información acerca de los problemas de un cierre sucio, cómo evitar mejor dicho escenario y qué hacer en caso de un cierre no limpio, consulte: Recuperar datos después de un cierre inesperado .
mongod --dbpath /path/to/your/db --shutdown
Más información en el sitio oficial: http://docs.mongodb.org/manual/tutorial/manage-mongodb-processes/