Navigation

shutdown

Changed in version 5.0.

shutdown

The shutdown command cleans up all database resources and then terminates the process. You must issue the shutdown command against the admin database.

The command has this syntax:

db.adminCommand({
  shutdown: 1,
  force: <boolean>
  timeoutSecs: <int>,
  comment: <any>
})

The command takes these fields:

Field Description
shutdown

Specify 1.

force

Optional. Specify true to force the mongod or mongos to shut down. Force shutdown interrupts any ongoing operations on the mongod or mongos and may result in unexpected behavior.

timeoutSecs

Optional.

Starting in MongoDB 5.0, mongod and mongos enter a quiesce period to allow any ongoing database operations to complete before shutting down.

If a mongod primary receives a shut down request, the primary:

  1. Attempts to step down to a secondary.

    If the step down fails and a:

    • shutdown or db.shutdownServer() command was run, mongod only continues the shut down steps if the force field is true, or a
    • SIGTERM signal was sent to mongod, mongod always continues the shut down steps.
  2. Enters the quiesce period.

  3. Ends any remaining database operations.

  4. Shuts down.

For a mongod secondary or mongos shut down request, the quiesce period is entered after a shut down was requested.

The quiesce period is specified by the:

The timeoutSecs field defaults to 15 seconds in MongoDB 5.0.

Clients cannot open new connections to a mongod or mongos that is shutting down.

In MongoDB 4.4 and earlier, for a mongod primary, timeoutSecs is the number of seconds the primary should wait for a secondary to catch up. If no secondaries catch up within the specified time, the command fails. Defaults to 10 seconds.

comment

Optional. A user-provided comment to attach to this command. Once set, this comment appears alongside records of this command in the following locations:

A comment can be any valid BSON type (string, integer, object, array, etc).

New in version 4.4.

Behavior

For a mongod started with Authentication, you must run shutdown over an authenticated connection. See Access Control for more information.

For a mongod started without Authentication, you must run shutdown from a client connected to the localhost interface. For example, run mongosh with the --host "127.0.0.1" option on the same host machine as the mongod.

shutdown on Replica Set Members

shutdown fails if the replica set member is running certain operations such as index builds. You can specify force: true to force the member to interrupt those operations and shut down.

Shutting Down the Replica Set Primary, Secondary, or mongos

Starting in MongoDB 5.0, mongod and mongos enter a quiesce period to allow any ongoing database operations to complete before shutting down.

If a mongod primary receives a shut down request, the primary:

  1. Attempts to step down to a secondary.

    If the step down fails and a:

    • shutdown or db.shutdownServer() command was run, mongod only continues the shut down steps if the force field is true, or a
    • SIGTERM signal was sent to mongod, mongod always continues the shut down steps.
  2. Enters the quiesce period.

  3. Ends any remaining database operations.

  4. Shuts down.

For a mongod secondary or mongos shut down request, the quiesce period is entered after a shut down was requested.

The quiesce period is specified by the:

The timeoutSecs field defaults to 15 seconds in MongoDB 5.0.

Clients cannot open new connections to a mongod or mongos that is shutting down.

In MongoDB 4.4 and earlier, if running shutdown against the replica set primary, the operation implicitly uses replSetStepDown to step down the primary before shutting down the mongod. If no secondary in the replica set can catch up to the primary within 10 seconds, the shutdown operation fails. You can issue shutdown with force: true to shut down the primary even if the step down fails.

Warning

Force shutdown of the primary can result in the rollback of any writes not yet replicated to a secondary.

Access Control

To run shutdown on a mongod enforcing Authentication, the authenticated user must have the shutdown privilege. For example, a user with the built-in role hostManager has the appropriate permissions.

Examples

Shut down a mongod

db.adminCommand({ "shutdown" : 1 })

Force Shut Down a mongod

db.adminCommand({ "shutdown" : 1, "force" : true })

Shut Down a Primary mongod With Longer Timeout

db.adminCommand({ "shutdown" : 1, timeoutSecs: 60 })