MongoDB配置选项文档列出了可以指定的所有可用选项,但是是否有人针对各种角色的MongoDB实例提供了一组完整的示例YAML格式的配置文件?

一组常见角色示例对于从头开始或希望使用最新配置文件格式进行测试的人来说是一个非常有用的起点。

#1 楼

以下是适用于Linux的YAML配置的几个示例(Windows路径和选项略有不同),本质上是显式设置一些默认值和常用设置。

首先,一个具有默认端口,路径的独立mongod日志设置-这将是用于本地测试的配置类型,还有一些其他功能,因此请显示常规样式:

storage:
    dbPath: "/data/db"
    directoryPerDB: true
    journal:
        enabled: true
systemLog:
    destination: file
    path: "/data/db/mongodb.log"
    logAppend: true
    timeStampFormat: iso8601-utc
processManagement:
    fork: true
net:
    bindIp: 127.0.0.1
    port: 27017
    wireObjectCheck : false
    unixDomainSocket: 
        enabled : true


关于此配置的一些注释:


通常,您不希望在生产中检查对象(wireObjectCheck: false),但是对于大量数据进行测试而言,它将使速度加快一点并且最小在这种环境中存在风险
除非复制集的所有成员都位于环回IP地址(因为这是指定的唯一绑定)上,否则这对复制不起作用,所以请注意

现在,让我们看一个典型的生产副本集成员的示例配置文件,该成员启用了身份验证并作为分片群集的一部分运行:

storage:
    dbPath: "/data/db"
    directoryPerDB: true
    journal:
        enabled: true
systemLog:
    destination: file
    path: "/var/log/mongodb.log"
    logAppend: true
    timeStampFormat: iso8601-utc
replication:
    oplogSizeMB: 10240
    replSetName: "rs1"
processManagement:
    fork: true
net:
    bindIp: 192.0.2.1
    port: 27018
security:
    keyFile: "/data/key/rs1.key"
    authorization: "enabled"
sharding:
    clusterRole: "shardsvr"


关于此配置的一些注意事项:


再次有默认值和隐式设置的显式声明(例如,clusterRole隐含端口),通常建议您避免混淆
IP绑定现在仅是外部IP地址,因此环回IP上的通信现在将失败,但是复制可以对远程主机起作用
oplog默认为空闲百分比的5%空间,因此在大容量卷上更保守,并显式设置分配的大小是常见的做法。

接下来,是一个示例mongos config:

sharding:
    configDB: "config1.example.net:27019,config2.example.net:27019,config3.example.net:27019"
    autoSplit: true
systemLog:
    destination: file
    path: "/var/log/mongos.log"
processManagement:
    fork: true
net:
    port: 27017
    bindIp: 192.0.2.2
    maxIncomingConnections: 5000
security:
    keyFile: "/data/key/mongos.key"
    authorization: "enabled"


这里唯一需要做的更改是不适用于mongos的删除操作(因为它不存储数据)和添加的configDB字符串,在所有mongos进程上必须相同。我以最大连接数设置为例,这不是必需的,但对于较大的群集来说通常是个好主意。

围绕分片集群,我们有一个示例配置服务器,它实际上是副本集成员的一个子集,但做了一些小的更改:在撰写本文时尚未发布)将引入几个新选项,尤其是随着新存储引擎的引入。因此,这是一个如何配置相同副本集成员的示例,但这一次使用WiredTiger存储引擎和(默认)快照压缩方法(注意:由于SERVER-16266而从原始更改,并添加了示例engineConfig):

storage:
    dbPath: "/data/db"
    journal:
        enabled: true
systemLog:
    destination: file
    path: "/var/log/mongodb.log"
    logAppend: true
    timeStampFormat: iso8601-utc
processManagement:
    fork: true
net:
    bindIp: 192.0.2.3
    port: 27019
security:
    keyFile: "/data/key/config.key"
    authorization: "enabled"
sharding:
    clusterRole: "configsvr"


作为最后的奖励,我展示了如何使用列表绑定多个IP地址,在这种情况下,此IP地址是外部IP和回送IP。

评论


再次感谢亚当,因为它是非常有用的信息。我特别喜欢2.8存储引擎配置有一些见解。我只想添加的一件事是,当大多数人在另一个“进程管理器” Ubuntu新贵运行时,大多数人都希望忽略“ processManagement”配置。因此,您不想在这里“分叉”,而让管理者来处理那部分配置。 YAML配置的最佳示例,但我的+1

–尼尔·伦(Neil Lunn)
2014年11月14日12:34

很有用。有趣的是,是否仍会保留2.4配置文件格式,以便与2.8及更高版本向后兼容?

–安德鲁(Andrew)
2014年12月16日23:31

不确定何时将其删除,但据我所知,它将保留在2.8中。当然,任何删除都将提前通知

–亚当C
2014年12月16日23:37

万一有人想要setParameter示例,请参见以下答案:dba.stackexchange.com/a/87653/6441

–亚当C
2015年1月7日15:59