Cambiado en la versión 5.0.
db.shutdownServer()Cierra el proceso
mongodomongosactual de forma limpia y segura. Debe ejecutar la operación en la basedb.shutdownServer()de datos de administración.db.shutdownServer()tiene esta sintaxis:db.shutdownServer({ force: <boolean>, timeoutSecs: <int> }) El método toma estos campos:
CampoDescripciónopcional. Especifique
truepara forzar lamongodo lamongospara que se apague. El apagado forzoso interrumpe cualquier operación en curso en elmongodo elmongosy puede resultar en un comportamiento inesperado.Puede pausar y reanudar las compilaciones de índices en curso usando. Consulte
forcedb.shutdownServer()en Miembros del conjunto de réplicas para obtener más información.Opcional.
A partir de MongoDB 5.0,
mongodymongosentran en un período de inactividad para permitir que se completen las operaciones de base de datos en curso antes de apagarse.Si un
mongodprimario recibe una solicitud de apagado, el primario:Intentos de pasar a un secundario.
Si el paso hacia abajo falla y un/una:
shutdownSedb.shutdownServer()ejecutó elmongodcomando o, solo continúa los pasos de apagado si el campo de fuerza es verdadero o un
Entra en el periodo de "quiesce".
Finaliza cualquier operación de base de datos restante.
Se apaga.
Para una
mongodsolicitud de apagado secundaria omongos, se entra en el período de inactividad después de solicitar el apagado.El periodo de parada se especifica por:
campotimeoutSecs
shutdowndb.shutdownServer()si se ejecutó un comando o, oshutdownTimeoutMillisForSignaledShutdownparámetro del servidor si se envió una señal deSIGTERMamongod, omongosShutdownTimeoutMillisForSignaledShutdownparámetro de servidor si se envió una señal deSIGTERMamongos.
Los clientes no pueden abrir nuevas conexiones a un
mongodo a unmongosque se está apagando.timeoutSecs especifica un periodo de tiempo en segundos. El valor por defecto es:
15 segundos a partir de MongoDB 5.0.
10 segundos en las versiones de MongoDB anteriores a la 5.0.
mongodusa timeoutSecs de la siguiente manera:Si el nodo actual es el nodo primario de un set de réplicas,
mongodespera un periodo de hasta el número de segundos especificados por el campo timeoutSecs para que un nodo elegible se ponga al día antes de renunciar al nodo primario. Para obtener detalles sobre el tiempo de puesta al día, consulta atraso de la replicación.Si el nodo actual está en el estado
SECONDARYdespués de dejar de ser primario, cualquier tiempo restante especificado en timeoutSecs se usa para un periodo de inactividad, lo que permite que se completen las operaciones existentes. Las nuevas operaciones se envían a otros nodos del set de réplicas.
A partir de 5.0 MongoDB,
mongosutiliza timeoutSecs como período de inactividad, lo que permite que las operaciones existentes finalicen. Las nuevas operaciones se envían a otros nodos. En versiones de MongoDBmongosanteriores 5 0a.,mongosse apaga inmediatamente y no utiliza timeoutSecs.
Esta operación ofrece un contenedor alrededor del comando shutdown.
Compatibilidad
Este método está disponible en implementaciones alojadas en los siguientes entornos:
Importante
Este comando no es compatible con los clústeres de MongoDB Atlas. Para obtener información sobre el soporte de Atlas para todos los comandos, consulta Comandos no compatibles.
MongoDB Enterprise: La versión basada en suscripción y autogestionada de MongoDB
MongoDB Community: La versión de MongoDB con código fuente disponible, de uso gratuito y autogestionada.
Comportamiento
Para un mongod iniciado con autenticación en implementaciones autogestionadas, debe ejecutar a db.shutdownServer() través de una conexión autenticada.Consulte Control de acceso para obtener más información.
Para unmongodiniciado sin autenticación en implementaciones autogestionadas, debe ejecutardb.shutdownServer()desde un cliente conectado a la interfaz localhost. Por ejemplo, ejecutemongoshcon la opción--host "127.0.0.1"en la misma máquina host que elmongod.
db.shutdownServer() en los miembros del set de réplicas
db.shutdownServer() falla si el miembro del mongod conjunto de réplicas está ejecutando ciertas operaciones, como la creación de índices. Puede especificar force: true para mongod guardar el progreso de la creación del índice en el disco. recupera la creación del índice cuando se reinicia y continúa desde el punto de control guardado.
Apagando el set de réplicas primario, secundario o mongos
A partir de MongoDB 5.0, mongod y mongos entran en un período de inactividad para permitir que se completen las operaciones de base de datos en curso antes de apagarse.
Si un mongod primario recibe una solicitud de apagado, el primario:
Intentos de pasar a un secundario.
Si el paso hacia abajo falla y un/una:
shutdownSedb.shutdownServer()ejecutó elmongodcomando o, solo continúa los pasos de apagado si el campo de fuerza es verdadero o un
Entra en el periodo de "quiesce".
Finaliza cualquier operación de base de datos restante.
Se apaga.
Para una mongod solicitud de apagado secundaria o mongos, se entra en el período de inactividad después de solicitar el apagado.
El periodo de parada se especifica por:
campotimeoutSecs
shutdowndb.shutdownServer()si se ejecutó un comando o, oshutdownTimeoutMillisForSignaledShutdownparámetro del servidor si se envió una señal deSIGTERMamongod, omongosShutdownTimeoutMillisForSignaledShutdownparámetro de servidor si se envió una señal deSIGTERMamongos.
Los clientes no pueden abrir nuevas conexiones a un mongod o a un mongos que se está apagando.
timeoutSecs especifica un periodo de tiempo en segundos. El valor por defecto es:
15 segundos a partir de MongoDB 5.0.
10 segundos en las versiones de MongoDB anteriores a la 5.0.
mongod usa timeoutSecs de la siguiente manera:
Si el nodo actual es el nodo primario de un set de réplicas,
mongodespera un periodo de hasta el número de segundos especificados por el campo timeoutSecs para que un nodo elegible se ponga al día antes de renunciar al nodo primario. Para obtener detalles sobre el tiempo de puesta al día, consulta atraso de la replicación.Si el nodo actual está en el estado
SECONDARYdespués de dejar de ser primario, cualquier tiempo restante especificado en timeoutSecs se usa para un periodo de inactividad, lo que permite que se completen las operaciones existentes. Las nuevas operaciones se envían a otros nodos del set de réplicas.
A partir de 5.0 MongoDB, mongos utiliza timeoutSecs como período de inactividad, lo que permite que las operaciones existentes finalicen. Las nuevas operaciones se envían a otros nodos. En versiones de MongoDB mongos anteriores 5 0a., mongos se apaga inmediatamente y no utiliza timeoutSecs.
Advertencia
El cierre forzado del primario puede provocar el rollback de cualquier escritura que aún no se haya replicado en un secundario.
Control de acceso
Para ejecutardb.shutdownServer()en unmongodque aplica la autenticación en implementaciones autogestionadas, el usuario autenticado debe tener el privilegiodb.shutdownServer(). Por ejemplo, un usuario con el rol integradohostManagertiene los permisos adecuados.
Ejemplos
Apagar un mongod
db.getSiblingDB("admin").shutdownServer()
Forzar el apagado de mongod
db.getSiblingDB("admin").shutdownServer({ "force" : true })
Apagar un Primario mongod con tiempo de espera más largo
db.getSiblingDB("admin").shutdownServer({ "timeoutSecs": 60 })