- Administration >
- Administration Tutorials >
- 配置,维护与分析 >
- 管理 mongod 进程
管理 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 以外的其他路径下,您可以指定一个 dbPath 。dbPath 必须在您启动 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() 来关闭实例。
停止一个复制集¶
步骤¶
如果 mongod 是 replica set 的 primary,那么将按照接下来的步骤来关闭这些 mongod 实例:
强制关闭复制集¶
如果从节点没有最新的数据并且您想关闭主节点,发送 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})