On this page本页内容
The command line and configuration file interfaces provide MongoDB administrators with a large number of options and settings for controlling the operation of the database system. 命令行和配置文件界面为MongoDB管理员提供了大量用于控制数据库系统操作的选项和设置。This document provides an overview of common configurations and examples of best-practice configurations for common use cases.本文档概述了常见配置和常见用例的最佳实践配置示例。
While both interfaces provide access to the same collection of options and settings, this document primarily uses the configuration file interface.虽然这两个接口都提供了对相同选项和设置集合的访问,但本文档主要使用配置文件接口。
If you installed MongoDB with a package manager such as 如果您在Linux上使用软件包管理器(如yum
or apt
on Linux or brew
on macOS, or with the MSI installer on Windows, a default configuration file has been provided as part of your installation:yum
或apt
)安装了MongoDB,在macOS上使用brew
安装了MongoDB,或者在Windows上使用MSI安装程序安装了MongoDB,则在安装过程中会提供一个默认配置文件:
Linux | apt , yum , or zypper Package Managerapt 、yum 或zypper 软件包管理器 | /etc/mongod.conf |
macOS | brew |
|
Windows | <install directory>\bin\mongod.cfg |
TGZ
or ZIP
file, you will need to create your own configuration file. TGZ
或ZIP
文件安装MongoDB,则需要创建自己的配置文件。For package installations of MongoDB on Linux or macOS, an initialization script which uses this default configuration file is also provided. 对于Linux或macOS上的MongoDB软件包安装,还提供了使用此默认配置文件的初始化脚本。This initialization script can be used to start the 此初始化脚本可用于以以下方式在这些平台上启动mongod
on these platforms in the following manner:mongod
:
On Linux systems that use the systemd init system (the 在使用systemctl
command):systemd
init系统(systemctl
命令)的Linux系统上:
sudo systemctl start mongod
On Linux systems that use the SystemV init init system (the 在使用service
command):SystemV init
初始化系统(service
命令)的Linux系统上:
sudo service mongod start
On macOS, using the 在macOS上,使用brew
package manger:brew
软件包管理器:
brew services start mongodb-community@5.0
If you installed MongoDB using a 如果使用TGZ
or ZIP
file, you will need to create your own configuration file. TGZ
或ZIP
文件安装MongoDB,则需要创建自己的配置文件。A basic example configuration can be found later in this document. 本文档后面部分提供了一个基本配置示例。Once you have created a configuration file, you can start a MongoDB instance with this configuration file by using either the 一旦创建了配置文件,就可以通过使用--config
or -f
options to mongod
. mongod
的--config
或-f
选项来使用该配置文件启动MongoDB实例。For example, on Linux:例如,在Linux上:
mongod --config /etc/mongod.conf mongod -f /etc/mongod.conf
Modify the values in the 在系统上修改mongod.conf
file on your system to control the configuration of your database instance.mongod.conf
文件中的值,以控制数据库实例的配置。
Consider the following basic configuration:考虑以下基本配置:
processManagement: fork: true net: bindIp: localhost port: 27017 storage: dbPath: /var/lib/mongo systemLog: destination: file path: "/var/log/mongodb/mongod.log" logAppend: true storage: journal: enabled: true
For most standalone servers, this is a sufficient base configuration. 对于大多数独立服务器,这是一个足够的基本配置。It makes several assumptions, but consider the following explanation:它做了几个假设,但是考虑下面的解释:
fork
true
, which enables a daemon mode for mongod
, which detaches (i.e. "forks") the MongoDB from the current session and allows you to run the database as a conventional server.true
,这将为mongod
启用守护程序模式,将MongoDB从当前会话中分离(即“分叉”),并允许您将数据库作为常规服务器运行。bindIp
is 是localhost
, which forces the server to only listen for requests on the localhost IP. localhost
,它强一致性务器只侦听本地主机IP上的请求。Only bind to secure interfaces that the application-level systems can access with access control provided by system network filtering (i.e. "firewall").仅绑定到应用级系统可以通过系统网络筛选(即“防火墙”)提供的访问控制访问的安全接口。
port
is 是27017
, which is the default MongoDB port for database instances. 27017
,这是数据库实例的默认MongoDB端口。MongoDB can bind to any port. MongoDB可以绑定到任何端口。You can also filter access based on port using network filtering tools.您还可以使用网络筛选工具根据端口筛选访问。
UNIX-like systems require superuser privileges to attach processes to ports lower than 1024.类UNIX系统需要超级用户权限才能将进程连接到1024以下的端口。
quiet
true
. true
。setParameter
to modify this setting during run time.setParameter
修改此设置。dbPath
is 是/var/lib/mongo
, which specifies where MongoDB will store its data files./var/lib/mongo
,它指定MongoDB将存储其数据文件的位置。
If you installed MongoDB on Linux using a package manager, such as 如果您在Linux上使用软件包管理器(如yum
or apt
, the /etc/mongod.conf
file provided with your MongoDB installation sets the following default dbPath
, depending on your Linux distro:yum
或apt
)安装了MongoDB,则MongoDB安装附带的/etc/mongod.conf
文件将根据您的Linux发行版设置以下默认数据库路径:
dbPath | ||
---|---|---|
RHEL / CentOS and Amazon | yum | /var/lib/mongo |
SUSE | zypper | /var/lib/mongo |
Ubuntu and Debian | apt | /var/lib/mongodb |
macOS | brew | /usr/local/var/mongodb |
The user account that mongod
runs under will need read and write access to this directory.mongod
运行的用户帐户需要对该目录进行读写访问。
systemLog.path
/var/log/mongodb/mongod.log
which is where mongod
will write its output. /var/log/mongodb/mongod.log
,mongod
将在其中写入其输出。mongod
writes all output to standard output (e.g. stdout
.)mongod
会将所有输出写入标准输出(例如stdout
)logAppend
true
, which ensures that mongod
does not overwrite an existing log file following the server start operation.true
,这确保mongod
不会在服务器启动操作后覆盖现有日志文件。storage.journal.enabled
true
, which enables journaling. true
,这使日志记录成为可能。mongod
enable journaling by default. mongod
的64位版本支持日志记录。Given the default configuration, some of these values may be redundant. 给定默认配置,其中一些值可能是多余的。However, in many situations explicitly stating the configuration increases overall system intelligibility.然而,在许多情况下,明确说明配置会提高整个系统的可理解性。
The following configuration options are useful for limiting access to a 以下配置选项可用于限制对mongod
instance:mongod
实例的访问:
net: bindIp: localhost,10.8.0.10,192.168.4.24,/tmp/mongod.sock security: authorization: enabled
net.bindIp
This example provides four values to the 本例为bindIp
option:bindIp
选项提供了四个值:
localhost
10.8.0.10
192.168.4.24
/tmp/mongod.sock
Because production MongoDB instances need to be accessible from multiple database servers, it is important to bind MongoDB to multiple interfaces that are accessible from your application servers. 由于生产MongoDB实例需要可从多个数据库服务器访问,因此将MongoDB绑定到可从应用服务器访问的多个接口非常重要。At the same time it's important to limit these interfaces to interfaces controlled and protected at the network layer.同时,将这些接口限制为网络层控制和保护的接口也很重要。
security.authorization
true
enables the authorization system within MongoDB. true
将启用MongoDB中的授权系统。localhost
interface for the first time to create user credentials.localhost
接口连接登录以创建用户凭据。replica set configuration is straightforward, and only requires that the 副本集配置非常简单,只需要replSetName
have a value that is consistent among all members of the set. replSetName
的值在副本集的所有成员中保持一致。Consider the following:考虑以下事项:
replication: replSetName: set0
Use descriptive names for sets. 对集合使用描述性名称。Once configured, use 配置后,使用mongosh
to add hosts to the replica set.mongosh
将主机添加到副本集中。
To enable authentication for the replica set using keyfiles , add the following 要使用密钥文件为副本集启用身份验证,请添加以下keyFile
option [1]:keyFile
选项[1]:
security: keyFile: /srv/mongodb/keyfile
Setting 设置keyFile
enables authentication and specifies a keyfile for the replica set member to use when authenticating to each other.keyFile
可启用身份验证,并指定副本集成员在相互身份验证时要使用的密钥文件。
The Replica Set Security section for information on configuring authentication with replica sets.副本集安全部分,了解有关使用副本集配置身份验证的信息。
The Replication document for more information on replication in MongoDB and replica set configuration in general.有关MongoDB中的复制和副本集配置的更多信息,请参阅副本文档。
[1] |
Sharding requires 分片需要配置服务器和分片具有不同mongod
instances with different mongod
configurations for the config servers and the shards. mongod
配置的mongod
实例。The config servers store the cluster's metadata, while the shards store the data.配置服务器存储集群的元数据,而分片存储数据。
To configure the config server 要配置配置服务器mongod
instances, in the configuration file, specify configsvr
for the sharding.clusterRole
setting.mongod
实例,请在配置文件中为sharding.clusterRole
设置指定configsvr
。
Changed in version 3.4.在版本3.4中更改。
sharding: clusterRole: configsvr net: bindIp: 10.8.0.12 port: 27001 replication: replSetName: csRS
To deploy config servers as a replica set, the config servers must run the WiredTiger Storage Engine. 要将配置服务器部署为副本集,配置服务器必须运行WiredTiger存储引擎。Initiate
the replica set and add members.复制副本将设置并添加成员。
To configure the shard 要配置分片mongod
instances, specify shardsvr
for the sharding.clusterRole
setting, and if running as a replica set, the replica set name:mongod
实例,请为sharding.clusterRole
设置指定shardsvr
,如果作为副本集运行,请指定副本集名称:
sharding: clusterRole: shardsvr replication: replSetName: shardA
If running as a replica set, 如果作为副本集运行,则启动分片副本集并添加成员。initiate
the shard replica set and add members.
For the router (i.e. 对于路由器(即mongos
), configure at least one mongos
process with the following setting:mongos
),使用以下设置配置至少一个mongos
进程:
sharding: configDB: csRS/10.8.0.12:27001
You can specify additional members of the config server replica set by specifying hostnames and ports in the form of a comma separated list after the replica set name.通过在副本集名称后以逗号分隔的列表形式指定主机名和端口,可以指定配置服务器副本集的其他成员。
In many cases running multiple instances of 在许多情况下,不建议在单个系统上运行多个mongod
on a single system is not recommended. mongod
实例。On some types of deployments [2] and for testing purposes you may need to run more than one 在某些类型的部署[2]上,出于测试目的,您可能需要在单个系统上运行多个mongod
on a single system.mongod
。
In these cases, use a base configuration for each instance, but consider the following configuration values:在这些情况下,为每个实例使用基本配置,但请考虑以下配置值:
storage: dbPath: /var/lib/mongo/db0/ processManagement: pidFilePath: /var/lib/mongo/db0.pid
The dbPath
value controls the location of the mongod
instance's data directory. dbPath
值控制mongod
实例的数据目录的位置。Ensure that each database has a distinct and well labeled data directory. 确保每个数据库都有一个明确且标记良好的数据目录。The pidFilePath
controls where mongod
process places it's process id (PID) file. pidFilePath
控制mongod
进程将其进程id(PID)文件放置在何处。As this tracks the specific 由于这会跟踪特定的mongod
file, it is crucial that file be unique and well labeled to make it easy to start and stop these processes.mongod
文件,所以文件必须是唯一的,并且标记良好,以便轻松启动和停止这些过程。
Create additional init scripts and/or adjust your existing MongoDB configuration and init script as needed to control these processes.根据需要创建其他初始化脚本和/或调整现有MongoDB配置和初始化脚本,以控制这些进程。
[2] | mongod instances. mongod 实例提供可接受的性能级别。 |
The following configuration options control various 以下配置选项控制各种mongod
behaviors for diagnostic purposes:mongod
行为以进行诊断:
operationProfiling.mode
operationProfiling.slowOpThresholdMs
configures the threshold which determines whether a query is "slow" for the purpose of the logging system and the profiler. 为日志系统和探查器配置用于确定查询是否“缓慢”的阈值。The default value is 100 milliseconds. 默认值为100毫秒。Set to a lower value if the logging system and the database profiler do not return useful results or set to a higher value to only log the longest running queries.如果日志记录系统和数据库探查器未返回有用的结果,请将其设置为较低的值,或者将其设置为较高的值,以便仅记录运行时间最长的查询。
Starting in version 4.2 (also available starting in 4.0.6), secondary members of a replica set now log oplog entries that take longer than the slow operation threshold to apply. 从版本4.2开始(也可从4.0.6开始使用),副本集的次要成员现在会记录需要比慢速操作阈值更长时间才能应用的oplog条目。These slow oplog messages:这些缓慢的oplog消息:
diagnostic log
.REPL
component with the text applied op: <oplog entry> took <num>ms
.REPL
组件下,文本为applied op: <oplog entry> took <num>ms
。May be affected by 可能会受到slowOpSampleRate
, depending on your MongoDB version:slowOpSampleRate
的影响,具体取决于您的MongoDB版本:
slowOpSampleRate
. slowOpSampleRate
的影响。slowOpSampleRate
.slowOpSampleRate
的影响。The profiler does not capture slow oplog entries.探查器不会捕获较慢的oplog条目。
systemLog.verbosity
controls the amount of logging output that 控制mongod
write to the log. mongod
写入日志的日志输出量。Only use this option if you are experiencing an issue that is not reflected in the normal logging level.仅当遇到正常日志记录级别中未反映的问题时,才使用此选项。
Starting in MongoDB 3.0, you can also specify verbosity level for specific components using the 从MongoDB 3.0开始,还可以使用systemLog.component.<name>.verbosity
setting. systemLog.component.<name>.verbosity
设置为特定组件指定详细级别。For the available components, see 有关可用组件,请参阅组件详细度设置。component verbosity settings
.
For more information, see also Database Profiling and MongoDB Performance.有关更多信息,请参阅数据库评测和MongoDB性能。