Managementmongod 流程

在本页面

MongoDB 作为标准程序运行。您可以通过发出mongod命令并指定选项从命令行启动 MongoDB。有关选项的列表,请参见mongod参考。 MongoDB 也可以作为 Windows 服务运行。有关详细信息,请参见将 MongoDB Community Edition 作为 Windows 服务运行。要安装 MongoDB,请参见Install MongoDB

以下示例假定系统路径中包含mongod进程的目录。 mongod进程是在单个服务器上运行的主要数据库进程。从 Client 端的角度来看,mongos提供了与mongod等效的一致 MongoDB 接口。 mongo二进制文件提供 ManagementShell 程序。

本文档讨论mongod流程;但是,本文档的某些部分可能适用于mongos个实例。

启动 mongod 进程

默认情况下,MongoDB 在端口27017上侦听来自 Client 端的连接,并将数据存储在/data/db目录中。

在 Windows 上,此路径位于启动 MongoDB 的驱动器上。例如,如果您未指定--dbpath,则在C:\驱动器上启动 MongoDB 服务器会将所有数据文件存储在C:\data\db中。

要使用所有默认值启动 MongoDB,请在系统 Shell 上发出以下命令:

mongod

指定数据目录

如果希望mongod将数据文件存储在* /data/db以外的其他路径上,则可以指定dbPath。在开始mongod之前,dbPath必须存在。如果不存在,请创建目录和权限,以便mongod可以向该路径读取和写入数据。有关权限的更多信息,请参见安全操作文档

要将dbPath指定为dbPath用作数据目录,请使用--dbpath选项。以下调用将启动mongod实例并将数据存储在/srv/mongodb路径中

mongod --dbpath /srv/mongodb/

指定一个 TCP 端口

一次只有一个进程可以侦听网络接口上的连接。如果您在一台计算机上运行多个mongod进程,或者其他进程必须使用此端口,则必须为每个进程分配一个不同的端口以侦听 Client 端连接。

要指定mongod的端口,请在命令行上使用--port选项。以下命令启动mongod在端口12345上监听:

mongod --port 12345

尽可能使用默认端口号,以避免混淆。

将 mongod 作为守护程序启动

要将mongod进程作为守护程序(即fork)运行,并*并将其输出写入日志文件,请使用--fork--logpath选项。您必须创建日志目录;但是,mongod将创建日志文件(如果不存在)。

以下命令将mongod作为守护程序启动,并将日志输出记录到/var/log/mongodb/mongod.log

mongod --fork --logpath /var/log/mongodb/mongod.log

其他配置选项

有关常见用例的常见配置和部署的概述,请参见运行时数据库配置

停止 mongod 进程

在干净关机中,mongod完成所有挂起的操作,将所有数据刷新到数据文件,然后关闭所有数据文件。其他关闭是不干净的,可能会损害数据文件的有效性。

为确保干净关闭,请始终使用以下方法之一关闭mongod个实例:

Use shutdownServer()

使用db.shutdownServer()方法从mongoShell 关闭mongod,如下所示:

use admin
db.shutdownServer()

init script调用相同的方法可获得相同的结果。

对于启用了authorization的系统,仅当对admin数据库进行身份验证时或在未启用身份验证的系统上通过 localhost 接口,用户才可以发出db.shutdownServer()

Use --shutdown

在 Linux 命令行中,使用以下命令中的--shutdown选项关闭mongod

mongod --shutdown

Use CTRL-C

当以交互方式(即不使用--fork)运行mongod实例时,请发出Control-C以执行干净关闭。

Use kill

在 Linux 命令行中,使用以下命令之一关闭特定的mongod实例:

kill <mongod process ID>
kill -2 <mongod process ID>

SIGTERM 和副本集

对于从 MongoDB 3.6.15 开始的 MongoDB 3.6 系列,如果副本集主数据库收到SIGTERM,则主数据库将尝试先关闭再关闭。

  • 如果降级成功,则实例不会在随后的新主数据库的选举中投票,并 continue 其关闭。

  • 如果降级失败,则实例将 continue 关闭。

SIGKILL

Warning

切勿使用kill -9(即SIGKILL)终止 mongod 实例。

停止副本集

Procedure

如果mongodreplica set中的primary,则此mongod实例的关闭过程包括以下步骤:

  • 检查secondaries的最新信息。

  • 如果在主节点的 10 秒钟内没有任何辅助节点,则mongod将返回一条消息,指出它不会关闭。您可以向shutdown命令传递timeoutSecs参数,以 await 辅助目录追赶。

  • 如果在主节点的 10 秒钟内有辅助节点,则主节点将退出并 await 辅助节点赶上。

  • 60 秒后或辅助节点赶上后,主要节点将关闭。

强制副本集关闭

如果没有最新的辅助服务器,并且您希望关闭主服务器,请使用force参数发出shutdown命令,如以下mongo shell 操作所示:

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

要 continue 检查指定的秒数(如果没有秒数),请立即使用timeoutSecs参数发出shutdown。如果没有立即更新,MongoDB 将 continue 检查辅助数据库是否达到指定的秒数。如果任何第二服务器在指定时间内赶上,则第一服务器将关闭。如果没有次要追赶者,它将不会关闭。

以下命令发出shutdown,其中timeoutSecs设置为5

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

或者,您可以将timeoutSecs参数与db.shutdownServer()方法一起使用:

db.shutdownServer({timeoutSecs : 5})