Database Manual / Self-Managed Deployments / Administration / Configuration & Maintenance

Configure Self-Managed mongod Processes配置自我管理的mongod进程

MongoDB runs as a standard program. You can start MongoDB from a command line by issuing the mongod command and specifying options. MongoDB作为标准程序运行。您可以通过发出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. The mongod process is the primary database process that runs on an individual server. 以下示例假设包含mongod进程的目录在系统路径中。mongod进程是在单个服务器上运行的主数据库进程。mongos provides a coherent MongoDB interface equivalent to a mongod from the perspective of a client. mongos提供了一个连贯的MongoDB接口,从客户端的角度来看,它相当于mongodThe mongosh binary provides the administrative shell.mongosh二进制文件提供了管理外壳。

This document discusses the mongod process; however, some portions of this document may be applicable to mongos instances.本文讨论了蒙戈过程;然而,本文档的某些部分可能适用于mongos实例。

Start mongod Processes启动mongod进程

By default, MongoDB listens for connections from clients on port 27017, and stores data in the /data/db directory.默认情况下,MongoDB在端口27017上监听来自客户端的连接,并将数据存储在/data/db目录中。

On Windows, this path is on the drive from which you start 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.在Windows上,此路径位于启动MongoDB的驱动器上。例如,如果不指定--dbpath,则在C:\驱动器上启动MongoDB服务器会将所有数据文件存储在C:\data\db中。

To start MongoDB using all defaults, issue the following command at the system shell:要使用所有默认值启动MongoDB,请在系统shell中发出以下命令:

mongod

Specify a Data Directory指定数据目录

If you want mongod to store data files at a path other than /data/db you can specify a dbPath. 如果希望mongod将数据文件存储在/data/db以外的路径,可以指定dbPathThe dbPath must exist before you start mongod. dbPath必须存在才能启动mongodIf 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 path以下调用将启动一个mongod实例,并将数据存储在/srv/mongodb路径中

mongod --dbpath /srv/mongodb/

Note

mongod includes a Full Time Diagnostic Data Capture mechanism to assist MongoDB engineers with troubleshooting deployments. mongod包括一个全职诊断数据捕获机制,以协助MongoDB工程师对部署进行故障排除。If this thread fails, it terminates the originating process. 如果此线程失败,它将终止发起进程。To avoid the most common failures, confirm that the user running the process has permissions to create the FTDC diagnostic.data directory. 为了避免最常见的故障,请确认运行该流程的用户有权创建FTDCdiagnostic.data(诊断数据)目录。For mongod the directory is within storage.dbPath. 对于mongod,目录位于storage.dbPath中。For mongos it is parallel to systemLog.path.对于mongos来说,它与systemLog.path并行。

Specify a TCP Port指定TCP端口

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:以下命令启动mongod在端口12345上的监听:

mongod --port 12345

Use the default port number when possible, to avoid confusion.尽可能使用默认端口号,以避免混淆。

Start mongod as a Daemon以守护进程的身份启动mongod

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 creates 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

Additional Configuration Options其他配置选项

For an overview of common configurations and deployments for common use cases, see Run-time Database Configuration for Self-Managed Deployments.有关常见用例的常见配置和部署的概述,请参阅自我管理部署的运行时数据库配置

Stop mongod Processes停止mongod进程

In a clean shutdown a mongod completes all pending operations, flushes all data to data files, and closes all data files. Other shutdowns are unclean and can compromise the validity of the data files.在干净关机中,mongod完成所有挂起的操作,将所有数据刷新到数据文件,并关闭所有数据文件。其他关闭是不干净的,可能会损害数据文件的有效性。

To ensure a clean shutdown, always shutdown mongod instances using one of the following methods:为确保干净关闭,请始终使用以下方法之一关闭mongod实例:

Use 使用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脚本调用相同的方法可以实现相同的结果。

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.对于启用了authorization的系统,用户只能在向管理员数据库或通过未启用身份验证的系统上的localhost接口进行身份验证时发出db.shutdownServer()

Use 使用--shutdown

Supported on Linux only. From the command line, shut down the mongod using the --shutdown option:仅支持Linux。在命令行中,使用--shutdown选项关闭mongod

mongod --shutdown
>Use >使用CTRL-C

When running the mongod instance in interactive mode (i.e. without --fork), issue Control-C to perform a clean shutdown.在交互模式下运行mongod实例时(即没有--fork),发出Control-C执行干净关机。

Use 使用kill

Supported on Linux and macOS only. From the command line, shut down a specific mongod instance using one of the following commands:仅支持Linux和macOS。在命令行中,使用以下命令之一关闭特定的mongod实例:

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

SIGTERM and Replica Sets和副本集

If a replica set primary receives a SIGTERM, the primary attempts to step down before shutting down.如果主副本集收到SIGTERM,则主副本集会在关闭之前尝试关闭。

  • If the step down succeeds, the instance does not vote in the ensuing election of the new primary, and continues its shutdown.如果下台成功,该实例将不会在随后的新初选中投票,并继续关闭。
  • If the step down fails, the instance continues its shutdown.如果降级失败,实例将继续关闭。

SIGKILL

Warning

Never use kill -9 (i.e. SIGKILL) to terminate a mongod instance.永远不要使用kill -9(即SIGKILL)来终止mongod实例。

Troubleshoot mongod Processesmongod进程故障排除

Generate a Backtrace生成回溯

For MongoDB instances running on Linux:对于在Linux上运行的MongoDB实例:

  • When the mongod and mongos processes receive a SIGUSR2 signal, backtrace details are added to the logs for each process thread.mongodmongos进程收到SIGUSR2信号时,回溯细节会添加到每个进程线程的日志中。
  • Backtrace details show the function calls for the process, which can be used for diagnostics and provided to MongoDB Support if required.回溯详细信息显示了进程的函数调用,可用于诊断,并在需要时提供给MongoDB支持。

The backtrace functionality is available for these architectures:回溯功能可用于以下架构:

  • x86_64
  • arm64 (starting in MongoDB 5.0.10, and 6.0)(从MongoDB 5.0.10和6.0开始)

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.生成的回溯数据按照--logpath配置写入mongod日志文件。

Stop a Replica Set停止副本集

Procedure过程

If the mongod is the primary in a replica set, the shutdown process for this mongod instance has the following steps:如果mongod是副本集中的主实例,则此mongod实例的关闭过程包括以下步骤:

  1. Check how up-to-date the secondaries are.检查secondary的最新情况。
  2. If no secondary is within 10 seconds of the primary, mongod will return a message that it will not shut down. 如果主服务器10秒内没有辅助服务器,mongod将返回一条消息,表示它不会关闭。You can pass the shutdown command a timeoutSecs argument to wait for a secondary to catch up.您可以向shutdown命令传递timeoutSecs参数,以等待辅助服务器赶上。
  3. If there is a secondary within 10 seconds of the primary, the primary will step down and wait for the secondary to catch up.如果在主服务器10秒内有一个辅助服务器,则主服务器将退出并等待辅助服务器赶上。
  4. After 60 seconds or once the secondary has caught up, the primary will shut down.60秒后或一旦辅助设备赶上,主设备将关闭。

Force Replica Set Shutdown强制关闭副本集

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参数发出shutdownMongoDB 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.如果任何一所secondary在规定时间内赶上,primary将关闭。如果没有secondary赶上,它就不会关闭。

The following command issues shutdown with timeoutSecs set to 5:以下命令发出shutdowntimeoutSecs设置为5

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

Alternately you can use the timeoutSecs argument with the db.shutdownServer() method:或者,您可以在db.shutdownServer()方法中使用timeoutSecs参数:

db.shutdownServer({timeoutSecs : 5})