mongod
Processesmongod
流程On this page本页内容
MongoDB runs as a standard program. MongoDB作为标准程序运行。You can start MongoDB from a command line by issuing the 通过发出mongod
command and specifying options. mongod
命令并指定选项,可以从命令行启动MongoDB。For a list of options, see the 有关选项列表,请参阅mongod
reference.mongod
参考。
The following examples assume the directory containing the 以下示例假定包含mongod
process is in your system paths. mongod
进程的目录位于系统路径中。The mongod
process is the primary database process that runs on an individual server. mongod
进程是在单个服务器上运行的主数据库进程。mongos
provides a coherent MongoDB interface equivalent to a mongod
from the perspective of a client. mongos
提供了一个连贯的MongoDB接口,从客户端的角度来看,它相当于mongod
。The mongosh
binary provides the administrative shell.mongosh
二进制文件提供了管理shell。
This document discusses the 本文件讨论了mongod
process; however, some portions of this document may be applicable to mongos
instances.mongod
过程;但是,本文档的某些部分可能适用于mongos
实例。
mongod
Processesmongod
进程By default, MongoDB listens for connections from clients on port 默认情况下,MongoDB在端口27017
, and stores data in the /data/db
directory.27017
上侦听来自客户端的连接,并将数据存储在/data/db
目录中。
On Windows, this path is on the drive from which you start MongoDB. 在Windows上,此路径位于启动MongoDB的驱动器上。For example, if you do not specify a 例如,如果未指定--dbpath
, starting a MongoDB server on the C:\
drive stores all data files in C:\data\db
.--dbpath
,则在C:\
驱动器上启动MongoDB服务器会将所有数据文件存储在C:\data\db
中。
To start MongoDB using all defaults, issue the following command at the system shell:要使用所有默认值启动MongoDB,请在系统外壳上发出以下命令:
mongod
If you want 如果希望mongod
to store data files at a path other than /data/db
you can specify a dbPath
. mongod
以/data/db
以外的路径存储数据文件,可以指定dbPath
。The 在启动dbPath
must exist before you start mongod
. mongod
之前,dbPath
必须存在。If it does not exist, create the directory and the permissions so that 如果不存在,请创建目录和权限,以便mongod
can read and write data to this path. mongod
可以读取和写入此路径中的数据。For more information on permissions, see the security operations documentation.有关权限的更多信息,请参阅安全操作文档。
To specify a 要为dbPath
for mongod
to use as a data directory, use the --dbpath
option. mongod
指定用作数据目录的dbPath
,请使用--dbPath
选项。The following invocation will start a 以下调用将启动mongod
instance and store data in the /srv/mongodb
pathmongod
实例并将数据存储在/srv/mongodb
路径中
mongod --dbpath /srv/mongodb/
Only a single process can listen for connections on a network interface at a time. 一次只能有一个进程监听网络接口上的连接。If you run multiple 如果在一台机器上运行多个mongod
processes on a single machine, or have other processes that must use this port, you must assign each a different port to listen on for client connections.mongod
进程,或者有其他进程必须使用此端口,则必须为每个进程分配一个不同的端口以侦听客户端连接。
To specify a port to 要指定mongod
, use the --port
option on the command line. mongod
的端口,请使用命令行上的--port
选项。The following command starts 以下命令在端口mongod
listening on port 12345
:12345
上启动mongod
侦听:
mongod --port 12345
Use the default port number when possible, to avoid confusion.尽可能使用默认端口号,以避免混淆。
mongod
as a Daemonmongod
作为守护进程启动To run a 要将mongod
process as a daemon (i.e. fork
), and write its output to a log file, use the --fork
and --logpath
options. mongod
进程作为守护进程(即fork
)运行,并将其输出写入日志文件,请使用--fork
和--logpath
选项。You must create the log directory; however, 必须创建日志目录;但是,如果日志文件不存在,mongod
will create the log file if it does not exist.mongod
将创建日志文件。
The following command starts 以下命令将mongod
as a daemon and records log output to /var/log/mongodb/mongod.log
.mongod
作为守护进程启动,并将日志输出记录到/var/log/mongodb/mongod.log
。
mongod --fork --logpath /var/log/mongodb/mongod.log
For an overview of common configurations and deployments for common use cases, see Run-time Database Configuration.有关常见用例的常见配置和部署的概述,请参阅运行时数据库配置。
mongod
Processesmongod
进程In a clean shutdown a 在完全关闭的情况下,mongod
completes all pending operations, flushes all data to data files, and closes all data files. mongod
会完成所有挂起的操作,将所有数据刷新到数据文件中,并关闭所有数据文件。Other shutdowns are unclean and can compromise the validity of the data files.其他关闭是不干净的,可能会损害数据文件的有效性。
To ensure a clean shutdown, always shutdown 为确保干净关闭,请始终使用以下方法之一关闭mongod
instances using one of the following methods:mongod
实例:
shutdownServer()
Shut down the 使用mongod
from mongosh
using the db.shutdownServer()
method as follows:db.shutdownServer()
方法从mongosh
关闭mongod
,如下所示:
use admin db.shutdownServer()
Calling the same method from a init script accomplishes the same result.从init script调用相同的方法可以实现相同的结果。
For systems with authorization
enabled, users may only issue db.shutdownServer()
when authenticated to the admin
database or via the localhost interface on systems without authentication enabled.
--shutdown
Supported on Linux only. 仅在Linux上受支持。From the command line, shut down the 在命令行中,使用mongod
using the --shutdown
option:--shutdown
选项关闭mongod
:
mongod --shutdown
CTRL-C
When running the mongod
instance in interactive mode (i.e. without --fork
), issue Control-C
to perform a clean shutdown.
kill
Supported on Linux and macOS only. 仅在Linux和macOS上受支持。From the command line, shut down a specific 在命令行中,使用以下命令之一关闭特定mongod
instance using one of the following commands:mongod
实例:
kill <mongod process ID> kill -2 <mongod process ID>
SIGTERM
and Replica SetsStarting in MongoDB 4.0.8 (and 3.6.15), if a replica set primary receives a 从MongoDB 4.0.8(和3.6.15)开始,如果副本集主设备接收到SIGTERM
, the primary attempts to step down before shutting down.SIGTERM
,则主设备会在关闭前尝试退出。
SIGKILL
Never use kill -9
(i.e. SIGKILL
) to terminate a mongod instance.
mongod
Processesmongod
进程故障排除Starting in MongoDB 4.4, 从MongoDB 4.4开始,在Linux上运行的mongod
and mongos
processes running on Linux will now log a backtrace for each of their running threads upon receipt of a SIGUSR2
signal. mongod
和mongos
进程现在将在收到SIGUSR2
信号后,为每个正在运行的线程记录回溯。This backtrace can be analyzed for diagnostic information or provided to MongoDB support as needed. 可以分析此回溯以获取诊断信息,或者根据需要提供给MongoDB支持。This functionality is currently available only on the 此功能目前仅在x86_64
architecture.x86_64
体系结构上可用。
To issue a 要向正在运行的SIGUSR2
signal to a running mongod
process, use the following command:mongod
进程发出SIGUSR2
信号,请使用以下命令:
kill -SIGUSR2 <mongod process ID>
The resulting backtrace data is written to the 生成的回溯数据被写入mongod
logfile as configured with --logpath
.mongod
日志文件,配置为--logpath
。
If the 如果mongod
is the primary in a replica set, the shutdown process for this mongod
instance has the following steps:mongod
是副本集中的primary,则此mongod
实例的关闭过程包括以下步骤:
mongod
will return a message that it will not shut down. mongod
将返回一条消息,表示它不会关闭。shutdown
command a timeoutSecs
argument to wait for a secondary to catch up.shutdown
命令传递一个timeoutSecs
参数,以等待辅助服务器赶上。If there is no up-to-date secondary and you want the primary to shut down, issue the 如果没有最新的辅助设备,并且希望主设备关闭,请使用shutdown
command with the force
argument, as in the following mongosh
operation:force
参数发出shutdown
命令,如以下mongosh
操作所示:
db.adminCommand({shutdown : 1, force : true})
To keep checking the secondaries for a specified number of seconds if none are immediately up-to-date, issue 要在指定的秒数内持续检查辅助设备(如果没有任何设备是即时最新的),请使用shutdown
with the timeoutSecs
argument. timeoutSecs
参数发出shutdown
。MongoDB will keep checking the secondaries for the specified number of seconds if none are immediately up-to-date. MongoDB将在指定的秒数内继续检查二级数据库,如果它们都不是最新的。If any of the secondaries catch up within the allotted time, the primary will shut down. 如果任何二级服务器在分配的时间内赶上,主服务器将关闭。If no secondaries catch up, it will not shut down.如果没有二级供应商迎头赶上,它也不会关闭。
The following command issues 以下命令在shutdown
with timeoutSecs
set to 5
:timeoutSecs
设置为5时发出shutdown
(关机):
db.adminCommand({shutdown : 1, timeoutSecs : 5})
Alternately you can use the 或者,您可以将timeoutSecs
argument with the db.shutdownServer()
method:timeoutSecs
参数与db.shutdownServer()
方法一起使用:
db.shutdownServer({timeoutSecs : 5})