运行时数据库配置
命令行和配置文件界面可为 MongoDB 管理员提供大量选项和设置,用于控制数据库系统的运行。该文档提供了通用配置以及普通使用案例的最佳配置示例。
尽管两种界面都可访问相同的选项和设置集合,但该文档主要使用配置文件界面。如果您使用控制脚本或操作系统的程序包来运行 MongoDB,很可能已经有一个配置文件,该文件位于
要使用该配置启动 MongoDB 实例,按以下格式发出一个命令:
mongod --config /etc/mongodb.conf mongod -f /etc/mongodb.conf
修改系统上的
启动、停止和运行数据库
请看以下基本配置:
fork = true bind_ip = 127.0.0.1 port = 27017 quiet = true dbpath = /srv/mongodb logpath = /var/log/mongodb/mongod.log logappend = true journal = true
对于大多数独立服务器,这是足够使用的基本配置。它作了几个假定,但请看以下说明:
- fork
为true,可为 mongod 启用后台模式 ,使(如 “forks”)MongoDB 从当前会话中分离,并允许您将数据库作为传统服务器来运行。 - bind_ip
为127.0.0.1,它会强制服务器仅侦听本地主机 IP 上的请求。仅绑定至安全接口,该接口可由应用程序级系统通过系统网络过滤(如“防火墙”)系统提供的访问控制权限来访问。 - 端口为
27017,这是数据库实例的默认 MongoDB 端口。MongoDB 可绑定至任何端口。您也可以使用网络过滤工具来过滤访问权限。 注意
UNIX 类系统要求超级用户权限才能将进程连接至低于 1000 的端口。 - quiet
为 true。这会禁止输出/日志文件中的所有条目,但最重要的条目除外。在正常操作中,这是避免日志噪音的最佳操作。在诊断或测试情况中,将该值设为false。使用 setParameter 可在运行时过程中修改该设置。 - dbpath
为 /srv/mongodb,它指定 MongoDB 存储其数据文件的位置。/srv/mongodb 和 /var/lib/mongodb 都是常用的位置。mongod 运行时所在的用户帐户将需要对该目录具有读写权限。 - logpath
为 /var/log/mongodb/mongod.log,其中 mongod 将写入其输出。如果您不设置此值,mongod 将把所有输出写入到标准输出(即 stdout)中。 - logappend为
true,确保 mongod 在服务器启动操作之后不会覆盖现有的日志文件。
如果采用默认配置,有些值可能是多余的。但是,在很多情况下,明确地描述配置可促进对整个系统的理解。
安全考虑事项
下面的配置选项集合对于限制对
bind_ip = 127.0.0.1 bind_ip = 10.8.0.10 bind_ip = 192.168.4.24 nounixsocket = true auth = true
考虑对这些配置决定的下列解释:
- “bind_ip”有三个值:127.0.0.1,本地主机接口;10.8.0.10,通常用于本地网络和 VPN 接口的专用 IP 地址;192.168.4.24,通常用于本地网络的专用网络接口。
由于生产 MongoDB 实例需要从多个数据库服务器访问,因此务必将 MongoDB 绑定到多个可从您的应用程序服务器访问的接口。同时,务必将这些接口限制为在网络层实现控制和保护的接口。
- “nounixsocket”为
true,这样将会禁用 UNIX 套接字,而在默认情况下为启用。这样可限制对本地系统的访问。使用共享权限连续运行 MongoDB 时这种情况很理想,但在大多数情况下影响极小。 - “auth”为
true,这样将在 MongoDB 中启用身份验证。如果已启用,第一次登录时您需要通过本地主机接口建立连接,以创建用户凭证。
另见
复制和分片配置
复制配置
副本集配置简单明了,只需要
replSet = set0
使用描述性的副本集名称。配置后,使用
另见
要对副本集启用身份验证,请添加下列项:
keyfile = /srv/mongodb/keyfile
1.8 版新特性:针对副本集;1.9.1 版针对分片副本集。
设置keyFile以启用身份验证,并指定一个密钥文件供副本集成员使用,确定相互之间何时进行身份验证。密钥文件的内容可以任意规定,但在副本集
分片配置
分片需要若干采用不同配置的
设置一个或三个“配置服务器”实例作为正常
configsrv = true bind_ip = 10.8.0.12 port = 27001
这样将创建一个运行于专用 IP 地址:10.8.0.12,端口:27001
要设置分片,请配置两个或更多
shardsvr = true
最后建立群集,使用下列设置来配置至少一个
configdb = 10.8.0.12:27001 chunkSize = 64
您可以通过在逗号分隔列表的表格中指定主机名和端口来指定多个
[1] | 数据块大小默认值为 64 MB,可在最均匀的数据分布(较小的数据块最佳)和最小化数据块迁移(较大的数据块最佳)之间实现理想的平衡。 |
另见
在同一系统上运行多个数据库实例
在很多情况下,建议不要在单个系统上运行多个
在这些情况下,为每个实例应用基本配置,但是请考虑下列配置值:
dbpath = /srv/mongodb/db0/ pidfileath = /srv/mongodb/db0.pid
dbpath
创建附加控制脚本并/或调整现有 MongoDB 的配置以及控制这些进程所需的控制脚本。
[2] | 使用 |
诊断配置
下列配置选项控制多种用于诊断的
slowms = 50 profile = 3 verbose = true diaglog = 3 objcheck = true cpu = true
使用基本配置,如果您遇到一些未知的问题或性能问题,根据需要添加这些选项:
- slowms
配置数据库探查器的阈值以考虑“缓慢”的查询。默认值为 100 毫秒。如果数据库探查器未返回有用的结果,则设置较低的值。请参阅“优化”维基页面,以了解 MongoDB 中的优化操作的详细信息。 - profile
设置数据库探查器 等级。探查器默认情况下不活动,因为那样可能会影响探查器本身的性能。除非为此设置指定了一个值,否则不对查询进行探查。 - verbose
启用详细记录模式,在此模式下可修改 mongod 输出并增加记录以包括更多的事件。仅在遇到不能正常反映日志记录级别的问题时使用此选项。如果您需要达到更详细的级别,请考虑下列选项: v = true vv = true vvv = true vvvv = true vvvvv = true
增加的每个
v 级别都会额外地增加记录的详细程度。verbose 选项相当于 v=true。 - diaglog
启用诊断日志记录。等级 3 记录所有读写选项。 - objcheck
强制 mongod 在收到来自客户端的请求时全部进行验证。使用此选项确保无效的请求不会导致错误,特别是在不可信客户机运行数据库时。此选项可能会影响数据库的性能。 -
- cpu
强制 mongod 报告 - 写锁定所用的最后时间间隔的百分比。时间间隔通常为 4 秒,日志中的每个输出行都包括自上次报告以来的实际时间间隔和写锁定所用的时间百分比。
- from:http://blog.sina.com.cn/s/blog_9c5dff2f01012n0f.html
- cpu