mongodb配置文件详解

运行时数据库配置

命令行配置文件界面可为 MongoDB 管理员提供大量选项和设置,用于控制数据库系统的运行。该文档提供了通用配置以及普通使用案例的最佳配置示例。

尽管两种界面都可访问相同的选项和设置集合,但该文档主要使用配置文件界面。如果您使用控制脚本或操作系统的程序包来运行 MongoDB,很可能已经有一个配置文件,该文件位于 /etc/mogondb.conf。检查/etc/init.d/mongod /etc/rc.d/mongod 脚本的内容确定这一点,以确保控制脚本会以适当的配置文件启动 mongod(见下文)。

要使用该配置启动 MongoDB 实例,按以下格式发出一个命令:

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

修改系统上的 /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)中。
  • logappendtrue,确保 mongod 在服务器启动操作之后不会覆盖现有的日志文件。
  • journal true,这样将启用 日志

    日志可确保单实例写入耐久性。 64 位版本的 mongod默认情况下启用日志。因此,此设置可能是多余的。

如果采用默认配置,有些值可能是多余的。但是,在很多情况下,明确地描述配置可促进对整个系统的理解。

安全考虑事项

下面的配置选项集合对于限制对 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 有一个在集合的所有成员之间保持一致的值即可。请考虑以下配置:

 replSet = set0

使用描述性的副本集名称。配置后,使用 mongo壳将主机添加到副本集。

另见

副本集重新配置”。

要对副本集启用身份验证,请添加下列项:

 keyfile = /srv/mongodb/keyfile

1.8 版新特性:针对副本集;1.9.1 版针对分片副本集。

设置keyFile以启用身份验证,并指定一个密钥文件供副本集成员使用,确定相互之间何时进行身份验证。密钥文件的内容可以任意规定,但在副本集 以及连接到该集的 mongos 实例的所有成员上必须相同。 keyfile 的大小必须小于 1 KB,可以只包含 base64 编码集字符,文件在 UNIX 系统上不得拥有组或“世界”权限。

另见

副本集重新配置”部分,以了解在操作期间更改副本集的流程方面的信息。

此外,请考虑“副本集安全性”部分以了解使用副本集配置身份验证的信息。

最后,请参阅“复制” 索引和“复制基础”文档,以了解关于 MongoDB 中的复制以及一般副本集配置的信息。

分片配置

分片需要若干采用不同配置的 mongod 实例。配置服务器存储群集的元数据,而群集将数据发布到一个或多个分片服务器。

注意

配置服务器不是副本集

设置一个或三个“配置服务器”实例作为正常 mongod 实例,然后添加下列配置选项:

 configsrv = true bind_ip = 10.8.0.12 port = 27001

这样将创建一个运行于专用 IP 地址:10.8.0.12,端口:27001 的配置服务器。确保没有端口冲突,且配置服务器可从您的“mongos”和“mongod”实例访问。

要设置分片,请配置两个或更多 mongod实例,使用您的基本配置并添加 shardsvr 设置:

 shardsvr = true

最后建立群集,使用下列设置来配置至少一个 mongos 进程:

 configdb = 10.8.0.12:27001 chunkSize = 64

您可以通过在逗号分隔列表的表格中指定主机名和端口来指定多个 configdb 实例。通常,避免将 chunkSize 修改为默认值 64 以外的值,[1]并应当确保此设置在所有 mongos实例中都保持一致。

[1] 数据块大小默认值为 64 MB,可在最均匀的数据分布(较小的数据块最佳)和最小化数据块迁移(较大的数据块最佳)之间实现理想的平衡。

另见

分片”维基页面,以了解关于分片和分片群集配置的详细信息。

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

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

在这些情况下,为每个实例应用基本配置,但是请考虑下列配置值:

 dbpath = /srv/mongodb/db0/ pidfileath = /srv/mongodb/db0.pid

dbpath 值控制 mongod 实例的数据目录的位置。确保每个数据库都有明确且标签正确的数据目录。pidfilepath 控制 mongod 进程将其pid 文件放置到的位置。由于此轨迹取决于具体的 mongod文件,因此务必确保该文件是唯一的且标签正确,以便于开始和停止这些进程。

创建附加控制脚本并/或调整现有 MongoDB 的配置以及控制这些进程所需的控制脚本。

[2] 使用 SSD 或其他高性能磁盘的单租户系统可为多 mongod 实例提供可接受的性能水平。此外,您还会发现,使用小工作集的多数据库在单系统上的性能可以接受。

诊断配置

下列配置选项控制多种用于诊断的 mongod 行为。下列使用针对一般生产目的调整的默认值:

 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

发表评论

电子邮件地址不会被公开。 必填项已用*标注