Modificado en la versión 5.0.
db.shutdownServer()Apaga la corriente
mongodomongosprocesar de manera limpia y segura. Debe emitir ladb.shutdownServer()operación contra la base de datos admin.db.shutdownServer()tiene esta sintaxis:db.shutdownServer({ force: <boolean>, timeoutSecs: <int> }) El método toma estos campos:
CampoDescripciónOpcional. Especifique
truepara forzar elmongodmongosapagado de o. Forzar el apagado interrumpe cualquier operación en curso enmongodo y puede provocar un comportamientomongosinesperado.Puedes pausar y reanudar la creación de índices en curso usando
force. Para obtener más información, consultedb.shutdownServer()sobre sets de réplicas.Opcional.
A partir de MongoDB 5.0,
mongody ingresan a un período de inactividad para permitir que cualquier operación de basemongosde datos en curso se complete antes de apagarse.Si un
mongodservidor principal recibe una solicitud de apagado, el servidor principal:Intentos de pasar a un secundario.
Si el paso hacia abajo falla y un/una:
Entra en el periodo de "quiesce".
Finaliza cualquier operación de base de datos restante.
Se apaga.
Para una
mongodmongossolicitud de apagado secundario o, el período de inactividad se ingresa después de que se solicitó el apagado.El período de inactividad se especifica mediante:
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 predeterminado es:
15 segundos a partir de MongoDB 5.0.
10 segundos en versiones de MongoDB anteriores a 5.0.
mongodutiliza timeoutSecs de la siguiente manera:Si el nodo actual es el primario de un set de réplicas,
mongodespera un periodo de hasta el número de segundos especificado por el campo timeoutSecs para que un nodo elegible se ponga al día antes de que el nodo primario ceda. Para más detalles sobre el tiempo de actualización, consulta atraso de la replicación.Si el nodo actual se encuentra en el estado
SECONDARYdespués de dejar de ser el primario, cualquier tiempo restante especificado en timeoutSecs se utiliza para un periodo de quiescencia, lo que permite que las operaciones existentes se completen. Se envían nuevas operaciones a otros nodos del conjunto de réplicas.
A partir de MongoDB 5.0,
mongosutiliza timeoutSecs como periodo de inactividad, lo que permite que las operaciones existentes se completen. Se envían nuevas operaciones a otros nodos demongos. En las versiones de MongoDB anteriores a la 5.0,mongosse apaga inmediatamente y no utiliza timeoutSecs.En MongoDB 4.4 y versiones anteriores, para una
mongodinstancia primaria, timeoutSecs es el número de segundos que la instancia primaria debe esperar a que una secundaria la alcance. Si ninguna instancia secundaria la alcanza dentro del tiempo especificado, el comando falla. El valor predeterminado es10segundos.
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, debes ejecutar db.shutdownServer() sobre una conexión autenticada. Consulta Control de acceso para obtener más información.
Para una mongod iniciada sin Autenticación en implementaciones autogestionadas, se debe ejecutar db.shutdownServer() desde un cliente conectado a la interfaz localhost. Por ejemplo, ejecute mongosh con la opción --host "127.0.0.1" en la misma máquina host que mongod.
db.shutdownServer() sobre los miembros del conjunto de réplicas
db.shutdownServer() fallará si el miembro que se replica del conjunto mongod está ejecutando ciertas operaciones, tales como creación de índices. Se puede especificar force: true para guardar el progreso de la creación de índices en el disco. El mongod recupera la creación de índices cuando se reinicia y continúa desde el punto de control guardado.
Apagado del conjunto de réplicas primaria, secundaria o mongos
A partir de MongoDB 5.0, mongod y ingresan a un período de inactividad para permitir que cualquier operación de base mongos de datos en curso se complete antes de apagarse.
Si un mongod servidor principal recibe una solicitud de apagado, el servidor principal:
Intentos de pasar a un secundario.
Si el paso hacia abajo falla y un/una:
Entra en el periodo de "quiesce".
Finaliza cualquier operación de base de datos restante.
Se apaga.
Para una mongod mongos solicitud de apagado secundario o, el período de inactividad se ingresa después de que se solicitó el apagado.
El período de inactividad se especifica mediante:
timeoutSecs campo si se ejecutó un comando
shutdownodb.shutdownServer(), 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 versiones de MongoDB anteriores a 5.0.
mongod utiliza 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 periodo de inactividad, lo que permite que las operaciones existentes se completen. Las nuevas operaciones se envían a otros nodos. En versiones de MongoDB mongos anteriores 5 0a., mongos se cierra 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 ejecutar db.shutdownServer() en un mongod aplicando Autenticación en Implementaciones Autogestionadas, el usuario autenticado debe tener el privilegio de db.shutdownServer(). Por ejemplo, un usuario con el rol integrado hostManager tiene los permisos adecuados.
Ejemplos
Apagar un mongod
db.getSiblingDB("admin").shutdownServer()
Forzar el apagado de mongod
db.getSiblingDB("admin").shutdownServer({ "force" : true })
Apagar un servidor principal mongod con un tiempo de espera más largo
db.getSiblingDB("admin").shutdownServer({ "timeoutSecs": 60 })