该命令行和配置文件接口,用于控制所述数据库系统的操作提供了大量选项MongoDB的管理员和设置。本文档概述了常用配置,并提供了常用案例的最佳实践配置示例。
虽然两个接口都提供对选项和设置的相同集合的访问,但是本文档主要使用配置文件接口。如果您使用软件包管理器(例如在Linux yum
或apt
Linux或brew
macOS 上)安装了MongoDB,
则在安装过程中将提供默认
配置文件:
/etc/mongod.conf
使用程序包管理器安装MongoDB时会包含默认配置文件。<install directory>/bin/mongod.cfg
/usr/local/etc/mongod.conf
从MongoDB的官方Homebrew分接头安装时会包含一个默认配置文件。对于Linux或macOS上的MongoDB软件包安装,还提供了使用此默认配置文件的初始化脚本。此初始化脚本可以通过mongod
以下方式在这些平台上启动
:
在使用systemd init系统(
systemctl
命令)的Linux系统上:
在使用SystemV init初始化系统(
service
命令)的Linux系统上:
在macOS上,使用brew
软件包管理器:
如果使用TGZ
或ZIP
文件安装了MongoDB ,则需要创建自己的配置文件。甲
基本示例性配置可以被本文档后面找到。创建配置文件后,您可以使用--config
或-f
选项使用以下配置文件来启动MongoDB实例
mongod
:
修改/etc/mongod.conf
系统上文件中的值以控制数据库实例的配置。
考虑以下基本配置:
对于大多数独立服务器,这是足够的基本配置。它有几个假设,但请考虑以下说明:
fork
是true
,它启用的
守护程序模式mongod
,该模式将MongoDB与当前会话分离(即,“派生”)MongoDB,并允许您将数据库作为常规服务器运行。
bindIp
是localhost
,这将强制服务器仅侦听localhost IP上的请求。仅绑定到应用程序级系统可以使用由系统网络过滤提供的访问控制(即“ 防火墙 ”)访问的安全接口。
port
是27017
,这是数据库实例的默认MongoDB端口。MongoDB可以绑定到任何端口。您还可以使用网络过滤工具基于端口过滤访问。
注意
类似UNIX的系统需要超级用户特权才能将进程附加到低于1024的端口。
quiet
是true
。这会禁用输出/日志文件中除最关键的条目以外的所有条目,因此不
建议在生产系统中使用。如果确实设置了此选项,则可以setParameter
在运行时用于修改此设置。
dbPath
is /var/lib/mongo
,它指定MongoDB将数据文件存储在何处。
如果您使用软件包管理器(例如yum
或)在Linux上安装了MongoDB apt
,则/etc/mongod.conf
MongoDB安装随附的文件将dbPath
根据Linux发行版设置以下默认值:
平台 | 包装经理 | 默认 dbPath |
---|---|---|
RHEL / CentOS和亚马逊 | yum |
/var/lib/mongo |
SUSE | zypper |
/var/lib/mongo |
Ubuntu和Debian | apt |
/var/lib/mongodb |
macOs | brew |
/usr/local/var/mongodb |
在其mongod
下运行的用户帐户
将需要对该目录的读写权限。
systemLog.path
是/var/log/mongodb/mongod.log
将在其中mongod
写入其输出的位置。如果未设置此值,则将mongod
所有输出写入标准输出(例如)stdout
。
storage.journal.enabled
是true
,启用
日记功能。日记记录可确保单实例的写持久性。mongod
默认情况下,启用日记功能的64位版本。因此,该设置可能是多余的。
给定默认配置,其中一些值可能是多余的。但是,在许多情况下,明确声明配置会提高整体系统的清晰度。
以下配置选项对于限制对mongod
实例的访问很有用
:
net.bindIp
本示例为bindIp
选项提供四个值:
localhost
,localhost接口;10.8.0.10
,通常用于本地网络和VPN接口的专用IP地址;192.168.4.24
,通常用于本地网络的专用网络接口;和/tmp/mongod.sock
,一个Unix域套接字路径。由于需要从多个数据库服务器访问生产MongoDB实例,因此将MongoDB绑定到可从应用程序服务器访问的多个接口非常重要。同时,将这些接口限制为在网络层受控制和保护的接口很重要。
security.authorization
true
启用MongoDB中的授权系统。如果启用,您将需要通过localhost
首次连接接口登录以创建用户凭据。也可以看看
副本集配置非常简单,仅要求副本集的replSetName
所有成员之间的值都一致。考虑以下:
为集使用描述性名称。配置完成后,使用
mongo
外壳程序将主机添加到副本集。
也可以看看
要使用
密钥文件对副本集启用身份验证,请添加以下
选项[1]:keyFile
设置keyFile
启用身份验证,并指定副本集成员在彼此进行身份验证时要使用的密钥文件。
[1] | 分片群集和副本集可以使用x.509代替密钥文件进行成员身份验证。有关详细信息,请参见x.509。 |
分片要求配置服务器和分片mongod
具有不同mongod
配置的实例
。配置服务器存储集群的元数据,而分片存储数据。
要配置配置服务器mongod
实例,请在配置文件中configsvr
为
sharding.clusterRole
设置指定。
在版本3.4中进行了更改:从版本3.4开始,MongoDB删除了对镜像配置服务器的支持,并且必须将配置服务器部署为副本集。
要将配置服务器部署为副本集,配置服务器必须运行WiredTiger Storage Engine。Initiate
副本集和添加成员。
要配置碎片mongod
的情况下,指定
shardsvr
的sharding.clusterRole
设置,如果运行的一个副本集,副本集名称:
如果作为副本集运行,initiate
则分片副本集并添加成员。
对于路由器(即mongos
),请mongos
使用以下设置至少配置一个
进程:
您可以通过在副本集名称之后以逗号分隔列表的形式指定主机名和端口来指定配置服务器副本集的其他成员。
也可以看看
的分片的手册的上分片和群集配置的详细信息部分。
在许多情况下,mongod
建议不要在单个系统上运行多个实例。在某些类型的部署中
[2],出于测试目的,您可能需要mongod
在单个系统上运行多个。
在这些情况下,请为每个实例使用基本配置,但请考虑以下配置值:
该dbPath
值控制mongod
实例的数据目录的位置
。确保每个数据库都有一个单独的且标签正确的数据目录。在
pidFilePath
那里控制mongod
过程将它的进程ID文件。在跟踪特定
mongod
文件时,至关重要的是文件必须唯一且标签正确,以使启动和停止这些过程变得容易。
根据需要创建其他初始化脚本和/或调整现有的MongoDB配置和初始化脚本,以控制这些过程。
[2] | 具有SSD或其他高性能磁盘的单租户系统可以为多个mongod 实例提供可接受的性能水平。此外,您可能会发现工作集较小的多个数据库可以在单个系统上正常运行。 |
以下配置选项控制各种mongod
行为以用于诊断目的:
operationProfiling.mode
设置数据库探查器级别。默认情况下,探查器是不活动的,因为它可能对探查器本身的性能产生影响。除非启用此设置,否则不会分析查询。
operationProfiling.slowOpThresholdMs
配置阈值,该阈值确定用于日志记录系统和事件探查器的查询是否“慢” 。默认值为100毫秒。如果日志记录系统和数据库探查器未返回有用的结果,则将其设置为较低的值;如果仅记录运行时间最长的查询,则将其设置为较高的值。从版本4.2(也从版本4.0.6开始可用)开始,副本集的辅助成员现在
记录的oplog条目所花费的时间比慢操作阈值要长。这些缓慢的oplog消息会在组件下的文本中记录为次要日志。这些慢操作日志条目仅取决于慢操作阈值。它们不依赖于日志级别(在系统级别或组件级别),配置级别或运行缓慢的采样率。探查器不会捕获缓慢的操作日志条目。diagnostic log
REPL
applied
op: <oplog entry> took <num>ms
systemLog.verbosity
控制mongod
写入日志的日志输出量
。仅当遇到正常日志记录级别未反映的问题时,才使用此选项。
从MongoDB 3.0开始,您还可以使用该systemLog.component.<name>.verbosity
设置为特定组件指定详细级别
。有关可用组件,请参见。component verbosity settings