运行时数据库配置

在本页面

command lineconfiguration file接口为 MongoDBManagement 员提供了大量用于控制数据库系统操作的选项和设置。本文档概述了常用配置,并提供了常用案例的最佳实践示例。

虽然两个界面都提供对选项和设置的相同集合的访问,但是本文档主要使用配置文件界面。如果您使用软件包 Management 器(例如 Linux 上的yumapt或 macOS 上的brew)安装了 MongoDB,则安装时将提供默认的configuration file

对于在 Linux 或 macOS 上安装 MongoDB 的软件包,还提供了使用此默认配置文件的初始化脚本。此初始化脚本可通过以下方式用于在这些平台上启动mongod

sudo systemctl start mongod
sudo service mongod start
brew services start mongodb-community@3.6

如果使用TGZZIP文件安装了 MongoDB,则需要创建自己的配置文件。 基本示例配置可以在本文档后面找到。创建配置文件后,可以使用mongod--config-f选项来使用此配置文件启动 MongoDB 实例:

mongod --config /etc/mongod.conf
mongod -f /etc/mongod.conf

修改系统上/etc/mongod.conf文件中的值,以控制数据库实例的配置。

配置数据库

请考虑以下基本配置:

processManagement:
   fork: true
net:
   bindIp: 127.0.0.1
   port: 27017
storage:
   dbPath: /var/lib/mongo
systemLog:
   destination: file
   path: "/var/log/mongodb/mongod.log"
   logAppend: true
storage:
   journal:
      enabled: true

对于大多数独立服务器,这是足够的基本配置。它有几个假设,但请考虑以下说明:

Note

类似 UNIX 的系统需要超级用户特权才能将进程附加到低于 1024 的端口。

如果您使用包 Management 器(例如yumapt)在 Linux 上安装了 MongoDB,则 MongoDB 安装随附的/etc/mongod.conf文件将设置以下默认值dbPath,具体取决于您的 Linux 发行版:

Platform Package Manager 默认值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运行的用户帐户将需要对该目录的读写权限。

给定默认配置,其中一些值可能是多余的。但是,在许多情况下,明确指出配置会提高整体系统的清晰度。

Security Considerations

以下配置选项对于限制对mongod实例的访问非常有用:

net:
   bindIp: 127.0.0.1,10.8.0.10,192.168.4.24,/tmp/mongod.sock
security:
   authorization: enabled

由于需要从多个数据库服务器访问生产 MongoDB 实例,因此将 MongoDB 绑定到可从应用程序服务器访问的多个接口非常重要。同时,将这些接口限制为在网络层受控制和保护的接口很重要。

See also

Security

复制和分片配置

Replication Configuration

Replica set的配置非常简单,只要求replSetName的值在集合的所有成员之间保持一致。考虑以下:

replication:
   replSetName: set0

为集使用描述性名称。配置完成后,使用mongo shell 将主机添加到副本集。

要为replica set启用身份验证,请添加以下keyFile选项:

security:
   keyFile: /srv/mongodb/keyfile

设置keyFile启用身份验证,并指定副本集成员彼此进行身份验证时使用的密钥文件。密钥文件的内容是任意的,但是在连接到集合的replica setmongos实例的所有成员上必须相同。密钥文件的大小必须小于一千字节,并且只能在 base64 集中包含字符,并且该文件在 UNIX 系统上不能具有组或“世界”权限。

See also

副本集安全部分提供有关使用副本集配置身份验证的信息。

Replication文档提供了有关 MongoDB 中复制和常规副本集配置的更多信息。

Sharding Configuration

分片要求config serversshardsmongod实例具有不同的mongod配置。配置服务器存储集群的元数据,而分片存储数据。

要配置配置服务器mongod实例,请在配置文件中为_设置指定configsvr

在 3.4 版中进行了更改:从 3.4 版开始,MongoDB 删除了对镜像配置服务器的支持,并且必须将配置服务器部署为副本集。

sharding:
    clusterRole: configsvr
 net:
    bindIp: 10.8.0.12
    port: 27001
replication:
    replSetName: csRS

要将配置服务器部署为副本集,配置服务器必须运行WiredTiger 存储引擎Initiate副本集并添加成员。

要配置分片mongod实例,请为sharding.clusterRole设置指定shardsvr,如果作为副本集运行,则副本集名称:

sharding:
   clusterRole: shardsvr
replication:
   replSetName: shardA

如果作为副本集运行,则initiate分片副本集并添加成员。

对于 Router(即mongos),使用以下setting配置至少一个mongos进程:

sharding:
   configDB: csRS/10.8.0.12:27001

您可以通过在副本集名称之后以逗号分隔列表的形式指定主机名和端口来指定配置服务器副本集的其他成员。

See also

手册的Sharding部分提供了有关分片和集群配置的更多信息。

在同一系统上运行多个数据库实例

在许多情况下,不建议在单个系统上运行多个mongod实例。在某些类型的部署[1]上,出于测试目的,您可能需要在单个系统上运行多个mongod

在这些情况下,请为每个实例使用base configuration,但请考虑以下配置值:

storage:
   dbPath: /var/lib/mongo/db0/
processManagement:
   pidFilePath: /var/lib/mongo/db0.pid

dbPath值控制mongod实例的数据目录的位置。确保每个数据库都有一个单独的且标签正确的数据目录。 pidFilePath控制mongod进程将其放置在process id文件中的位置。由于这会跟踪特定的mongod文件,因此至关重要的是,文件必须唯一且标签正确,以使启动和停止这些过程变得容易。

根据需要创建其他init scripts和/或调整现有的 MongoDB 配置和初始化脚本,以控制这些过程。

[1] 具有SSD或其他高性能磁盘的单租户系统可以为多个mongod实例提供可接受的性能级别。此外,您可能会发现工作集较小的多个数据库可以在单个系统上正常运行。

Diagnostic Configurations

以下配置选项控制各种mongod行为,以用于诊断目的:

对于从版本 3.6.11 开始的 MongoDB 3.6 部署,副本集的辅助成员现在为记录操作日志条目,所花费的时间超过了慢操作阈值。这些慢速 oplog 消息将在文本applied op: <oplog entry> took <num>ms下的REPL组件下的diagnostic log中记录。这些慢操作日志条目仅取决于慢操作阈值。它们不取决于日志级别(系统级别或组件级别),配置级别或运行缓慢的采样率。探查器不会捕获缓慢的操作日志条目。

从 MongoDB 3.0 开始,您还可以使用systemLog.component.<name>.verbosity设置为特定组件指定详细级别。有关可用组件,请参见组件详细度设置

有关更多信息,另请参见Database ProfilingMongoDB Performance

首页