OPTIONS
翻译或纠错本页面

管理 mongod 进程

MongoDB是作为一个标准程序来运行的。您可以从命令行发送 mongod 命令并指定选项来启动MongoDB。 具体选项会在 mongod 里列出。MongoDB也能作为Windows服务来运行。具体细节,请见 将MongoDB设置为一个Windows服务。安装MongoDB,请见 安装MongoDB

接下来的例子会假设包含 mongod 进程的目录在您的系统路径下。 mongod 进程是运行在单独的服务器上的主要数据库进程。 mongos 提供了一个一致性的MongoDB接口,就如同透过一个客户端来看 mongod 一样。二进制程序 mongo 则提供了用了管理的shell。

这篇文档讨论的是 mongod 进程;然而,这个文档的某些部分或许也适用于 mongos 实例。

开启``mongod``进程

默认情况下,MongoDB将数据存储在 /data/db 目录里。在Windows里,MongoDB将数据存储在 C:\data\db 里。在所有平台上,MongoDB对来自 27017 端口上的客户端连接进行监听。

全部使用默认配置来启动MongoDB,只需要在系统shell里发出以下命令即可:

mongod

指定数据目录

如果您想将数据文件存储在除 /data/db 以外的其他路径下,您可以指定一个 dbPathdbPath 必须在您启动 mongod 之前就已存在。如果该目录不存在,创建它之后再赋予足够的权限,以便于 mongod 能在此路径下正常进行读写。更多关于权限的信息,请参阅 security operations documentation

可以使用 --dbpath 选项,为 mongod 指定一个 dbPath 来当做数据目录使用。下面的调用将会启动一个 mongod 实例并将数据存储在 /srv/mongodb 路径下。

mongod --dbpath /srv/mongodb/

指定TCP端口

在只有一个进程的时候,可以在一个网络接口上监听所有连接。如果您在一台服务器上运行多个 mongod 进程,或者有其他一些进程必须使用这个端口,那么您必须分配不同的端口去监听每一个客户端的连接。

mongod 指定一个端口,请在命令行使用 --port 选项。下面的命令将启动 mongod 并在``12345``: 端口监听它。

mongod --port 12345

为了避免混淆,请尽可能的使用默认的端口号。

将 mongodb 以守护进程的方式启动

要运行一个 mongod 进程来作为一个守护进程(也就是 fork),*并且*将输出写入到一个日志文件里,可以使用 --fork--logpath 选项。您必须创建一个log目录;可是,如果这个日志文件不存在的话,mongod 会代劳。

下面的命令将启动 mongod 作为一个守护进程并将日志输出记录到 /var/log/mongodb.log 里。

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

附加的配置选项

概述常见配置和常见的部署配置。配置方面的常见事例,请见 Run-time Database Configuration

停止 mongod 进程

在一次正常关闭过程中, mongod 会完成所有挂起的操作,将所有内存中的数据刷进数据文件中,并且关闭所有数据文件。其他关闭过程并不干净并且数据文件的有效性会有所折衷。

为了确保正常关闭实例,通常会用下列方法的一种来关闭 mongod 实例。

使用 shutdownServer()

mongo shell中使用 db.shutdownServer() 方法来关闭:method:db.shutdownServer() ,如下所示:

use admin
db.shutdownServer()

从一个控制脚本中调用相同的方法可以达到同样的结果。

对于启用 authorization 的系统,通过验证登陆到 admin 数据库,或者在为开启验证的情况下经由本地主机的系统接口登陆到 admin 数据库时,用户可以仅仅通过发送 db.shutdownServer() 来关闭实例。

使用 --shutdown

从Linux命令行关闭 mongod ,可以使用 --shutdown 选项 如下所示:

mongod --shutdown

使用 CTRL-C

当正在运行一个交互模式 (i.e. without --fork) 的 mongod 实例时,发送 Control-C 来进行正常关闭。

使用 kill

使用以下命令从Linux命令行关闭一个特定的 mongod 实例:

kill <mongod process ID>

警告

永远不要使用 kill -9 (i.e. SIGKILL) 来终止一个mongod实例。

停止一个复制集

步骤

如果 mongodreplica setprimary,那么将按照接下来的步骤来关闭这些 mongod 实例:

  1. 检查当前所有从节点的oplog时间戳。

  2. 如果从节点的时间戳落后于主节点10秒, mongod 将会返回节点不会被关闭的消息。您可以传递一个 timeoutSecs 参数给 shutdown 命令来等待从节点追上主节点。

  3. 如果有从节点与主节点oplog时间戳的差值在10秒之内,接下来主节点会降级为从节点并等待从节点来追赶进度。

  4. 一旦从节点追上进度或者60秒之后,主节点将会关闭。

强制关闭复制集

如果从节点没有最新的数据并且您想关闭主节点,发送 shutdown 命令加上 force 参数就像下面 mongo shell里的操作一样:

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

如果没有节点能立刻更新到最新的数据,发送 shutdown 加上 timeoutSecs 参数来在指定的时间(秒)内保持对从节点的检查。如果在分配的时间内有任意一个从节点追上,主节点将会关闭。反之,主节点将不会关闭。

下面的命令发送 shutdown 并将 timeoutSecs 设成 5:

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

您也可以使用 db.shutdownServer() 方法的时候选择性地加上 timeoutSecs 参数。

db.shutdownServer({timeoutSecs : 5})