摘要:

继上一篇NoSQL之【MongoDB】学习(一):安装说明 之后,知道了如何安装和启动MongoDB,现在对启动时指定的配置文件(mongodb.conf)进行说明,详情请见官方

启动MongoDB有2种方式,一是直接指定配置参数,二是指定配置文件。这里先介绍配置文件,启动方式如下:

mongod --config /etc/mongodb.conf

配置如下:

verbose:日志信息冗余。默认false。提高内部报告标准输出或记录到logpath配置的日志文件中。要启用verbose或启用verbosity 用vvvv参数,如:

verbose = true
vvvv = true

ps:启动verbose冗长信息,它的级别有 vv~vvvvv,v越多级别越高,在日志文件中记录的信息越详细。

port:端口。默认27017,MongoDB的默认服务TCP端口,监听客户端连接。要是端口设置小于1024,比如1021,则需要root权限启动,不能用mongodb帐号启动,(普通帐号即使是27017也起不来)否则报错:[mongo --port=1021 连接]

ERROR: listen(): bind() failed errno: Permission denied for socket: 127.0.0.1:
port = 

bind_ip:绑定地址。默认127.0.0.1,只能通过本地连接。进程绑定和监听来自这个地址上的应用连接。要是需要给其他服务器连接,则需要注释掉这个或则把IP改成本机地址,如192.168.200.201[其他服务器用 mongo --host=192.168.200.201 连接] ,可以用一个逗号分隔的列表绑定多个IP地址。

bind_ip = 127.0.0.1

maxConns:最大连接数。默认值:取决于系统(即的ulimit和文件描述符)限制。MongoDB中不会限制其自身的连接。当设置大于系统的限制,则无效,以系统限制为准。这对于客户端创建很多“表”,允许连接超时而不关闭“表”的时候很有用。设置该值的高于连接池和总连接数的大小,以防止尖峰时候的连接。注意:不能设置该值大于20000。

maxConns = 

objcheck:强制验证客户端请求。2.4的默认设置为objcheck成为true,在早期版本objcheck默认为false。因为它强制验证客户端请求,确保客户端绝不插入无效文件到数据库中。对于嵌套文档的对象,会有一点性能影响。设置noobjcheck 关闭。

objcheck = true
#noobjcheck = false

noobjcheck:同上,默认关闭false。

#noobjcheck = false

logpath:指定日志文件,该文件将保存所有的日志记录、诊断信息。除非另有指定,mongod将所有的日志信息输出到标准输出。如果没有指定logappend,重启则日志会进行覆盖操作。

logpath=/var/log/mongodb/mongodb.log

logappend:写日志的模式:设置为true为追加。默认是覆盖。如果未指定此设置,启动时MongoDB的将覆盖现有的日志文件。

logappend=true

syslog:日志输出都发送到主机的syslog系统,而不是标准输出到logpath指定日志文件。syslog和logpath不能一起用,会报错:

Cant use both a logpath and syslog
syslog  = true

pidfilepath:进程ID,没有指定则启动时候就没有PID文件。默认缺省。

pidfilepath = /var/run/mongo.pid

keyFile:指定存储身份验证信息的密钥文件的路径。默认缺省。详情见:"

Replica Set Security" and “Replica Set Administration.”

keyFile = /srv/mongodb/keyfile

nounixsocket:套接字文件,默认为false,有生成socket文件。当设置为true时,不会生成socket文件。

nounixsocket = false

unixSocketPrefix:套接字文件路径,默认/tmp

unixSocketPrefix = /tmp

fork:是否后台运行,设置为true 启动 进程在后台运行的守护进程模式。默认false。

fork = true

auth:用户认证,默认false。不需要认证。当设置为true时候,进入数据库需要auth验证,当数据库里没有用户,则不需要验证也可以操作。直到创建了第一个用户,之后操作都需要验证。

auth = true

比如:通过db.addUser('sa','sa')  在admin库下面创建一个超级用户,只能在在admin库下面先认证完毕了:ab.auth('sa','sa') ,才能去别的库操作,不能在其他库验证。这样连接数据库也需要指定库:

mongo -usa -psa admin     #sa 帐号连接admin
mongo -uaa -paa test      #aa 帐号连接test

noauth:禁止用户认证,默认true。同上

noauth = true

cpu:设置为true会强制mongodb每4s报告cpu利用率和io等待,把日志信息写到标准输出或日志文件。默认为false。

cpu = true

开启日志会出现:

Mon Jun  ::42.241 [snapshotthread] cpu: elapsed:  writelock: %

dbpath:数据存放目录。默认: /data/db/

dbpath=/var/lib/mongodb

diaglog:创建一个非常详细的故障排除和各种错误的诊断日志记录。默认0。设置为1,为在dbpath目录里生成一个diaglog.开头的日志文件,他的值如下:

Value    Setting
off. No logging. #关闭。没有记录。
Log write operations. #写操作
Log read operations. #读操作
Log both read and write operations. #读写操作
Log write and some read operations. #写和一些读操作

设置不等于0,日志会每分钟flush 一次:

Mon Jun  ::17.504 [DataFileSync] flushing diag log
Mon Jun ::17.442 [DataFileSync] flushing diag log

产生的日志可以用mongosniff 来查看:要是mongosniff[类似于tcpdump的作为一个MongoDB的特定的TCP/ IP网络流量]出现报错和具体用法,请见这里,之前先执行:apt-get install libpcap-dev

root@m3:/var/lib/mongodb# mongosniff --source DIAGLOG diaglog.51b542a9

注意:当重新设置成0,会停止写入文件,但mongod还是继续保持打开该文件,即使它不再写入数据文件。如果你想重命名,移动或删除诊断日志,你必须完全关闭mongod实例。

diaglog = 

directoryperdb:设置为true,修改数据目录存储模式,每个数据库的文件存储在DBPATH指定目录的不同的文件夹中。使用此选项,可以配置的MongoDB将数据存储在不同的磁盘设备上,以提高写入吞吐量或磁盘容量。默认为false。
注意:要是在运行一段时间的数据库中,开启该参数,会导致原始的数据都会消失(注释参数则会回来)。因为数据目录都不同了,除非迁移现有的数据文件到directoryperdb产生的数据库目录中,如:
root@m3:/var/lib/mongodb# mv test.* test/ 
把test数据文件迁移到directoryperdb产生的数据库test目录中。 所以需要在规划好之后确定是否要开启。

directoryperdb = ture
原始数据结构:
journal
mongod.lock
local.
local.
local.ns
test.
test.
test.ns 开启 directoryperdb,并把数据文件迁移到相关的数据目录后的结构: journal
mongod.lock
local/local.
local/local.
local/local.ns
test/test.
test/test.
test/test.ns

journal:日志,(redo log,更多的介绍请看这里这里
默认值:(在64位系统)true。
默认值:(32位系统)false。
设置为true,启用操作日志,以确保写入持久性和数据的一致性,会在dbpath目录下创建journal目录。
设置为false,以防止日志持久性的情况下,并不需要开销。为了减少磁盘上使用的日志的影响,您可以启用nojournal,并设置为true。
注意:在64位系统上禁用日志必须使用带有nojournal的。

#journal=true
journal=false

32位OS:

Tue Jun  ::09.628 [initandlisten] ** NOTE: This is a  bit MongoDB binary.
Tue Jun ::09.628 [initandlisten] ** bit builds are limited to less than 2GB of data (or less with --journal).

64位OS:

Tue Jun  :: [initandlisten] journal dir=/var/lib/mongodb/journal
Tue Jun :: [initandlisten] recover : no journal files present, no recovery needed

nojournal:禁止日志
默认值:(在64位系统)false。
默认值:(32位系统)true。
设置nojournal为true关闭日志,64位,2.0版本后的mongodb默认是启用 journal日志。

nojournal=true

journalCommitInterval:刷写提交机制,默认是30ms或则100ms。较低的值,会更消耗磁盘的性能。
此选项接受2和300毫秒之间的值:
如果单块设备提供日志和数据文件,默认的日记提交时间间隔为100毫秒。
如果不同的块设备提供的日志和数据文件,默认的日记提交的时间间隔为30毫秒。

journalCommitInterval=

ipv6:是否支持ipv6,默认false。

jsonp:是否允许JSONP访问通过一个HTTP接口,默认false。

nohttpinterface:是否禁止http接口,即28017 端口开启的服务。默认false,支持。

nohttpinterface = false

noprealloc:预分配方式。
默认false:使用预分配方式来保证写入性能的稳定,预分配在后台进行,并且每个预分配的文件都用0进行填充。这会让MongoDB始终保持额外的空间和空余的数据文件,从而避免了数据增长过快而带来的分配磁盘空间引起的阻塞。
设置noprealloc= true来禁用预分配的数据文件,会缩短启动时间,但在正常操作过程中,可能会导致性能显著下降。

noprealloc = false

noscripting:是否禁止脚本引擎。默认是false:不禁止。ture:禁止
要是设置成true:运行一些脚本的时候会出现:

JavaScript execution failed: group command failed: { "ok" : , "errmsg" : "server-side JavaScript execution is disabled" }
#noscripting = true     <====> noscripting = false

notablescan:是否禁止表扫描操作。默认false:不禁止,ture:禁止

禁止要是执行表扫描会出现:

error: { "$err" : "table scans not allowed:test.emp", "code" :  }

可以动态修改设置:

db.adminCommand({setParameter:, notablescan:false})
#notablescan = true  <====> notablescan = false

nssize:命名空间的文件(即NS)的默认大小,默认16M,最大2G。
所有新创建的默认大小命名空间的文件(即NS)。此选项不会影响现有的命名空间的文件的大小。默认值是16M字节,最大大小为2 GB。让小数据库不让浪费太多的磁盘空间,同时让大数据在磁盘上有连续的空间。

-rwxrwxrwx  mongodb zhoujy  16M  6月  : test.
-rwxrwxrwx mongodb zhoujy 32M 6月 : test.
-rwxrwxrwx mongodb zhoujy 16M 6月 : test.ns
drwxr-xr-x root root .0K 6月 : _tmp
nssize  = 

profile:数据库分析等级设置。记录一些操作性能到标准输出或则指定的logpath的日志文件中,默认0:关闭。

级别 设置
关。无分析。
开。仅包括慢操作。
开。包括所有操作。

控制 Profiling  的开关和级别:2种
第一种是直接在启动参数里直接进行设置或则启动MongoDB时加上–profile=级别,其信息保存在 生成的system.profile 中。

profile = 

第二种是在客户端用db.setProfilingLevel(级别)命令来实时配置,其信息保存在 生成的system.profile 中。

[initandlisten] creating profile collection: local.system.profile
> db.setProfilingLevel()
{ "was" : , "slowms" : , "ok" : }
> db.getProfilingStatus()
{ "was" : , "slowms" : }

默认情况下,mongod的禁用分析。数据库分析可以影响数据库的性能,因为分析器必须记录和处理所有的数据库操作。所以在需要的时候用动态修改就可以了。

slowms:记录profile分析的慢查询的时间,默认是100毫秒。具体同上。

slowms  = 
> db.getProfilingStatus()
{ "was" : , "slowms" : }

quota:配额,默认false。是否开启配置每个数据库的最多文件数的限制。当为true则用quotaFiles来配置最多文件的数量。

quota = true

quotaFiles:配额数量。每个数据库的数据文件数量的限制。此选项需要quota为true。默认为8。

quotaFiles = 

rest: 默认false,设置为true,使一个简单的 REST API。

rest = true

设置为true,开启后,在MongoDB默认会开启一个HTTP协议的端口提供REST的服务(nohttpinterface = false),这个端口是你Server端口加上1000,即28017,默认的HTTP端口是数据库状态页面,(开启后,web页面的Commands 行中的命令都可以点进去)。mongodb自带的REST,不支持 增、删、改,同时也不支持 权限认证。
详细信息见这里这里
repair:修复数据库操作,默认是false。
设置为true时,启动后修复所有数据库,设置这个选项最好在命令行上,而不是在配置文件或控制脚本。如:
命令行修复:

> db.repairDatabase('xxx')
{ "ok" : }
> db.repairDatabase()
{ "ok" : }

启动时修复:

repair = true
root@m3:/var/log/mongodb# mongod --repair

启动时修复,需要关闭journal,否则报错:

Can't specify both --journal and --repair options.

并且启动时,用控制文件指定参数和配置文件里指定参数的方式进行修复之后,(修复信息见log),需要再禁用repair参数才能启用mongodb。
注意:mongod修复时,需要重写所有的数据库文件。如果在同一个帐号下不能运行修复,则需要运行chown修改数据库文件的权限。

repairpath:修复路径,默认是在dbpath路径下的_tmp 目录。

drwxr-xr-x  root    root   .0K  6月  : _tmp

smallfiles:是否使用较小的默认文件。默认为false,不使用。
设置为true,使用较小的默认数据文件大小。smallfiles减少数据文件的初始大小,并限制他们到512M,也减少了日志文件的大小,并限制他们到128M。
如果数据库很大,各持有少量的数据,会导致mongodb创建很多文件,会影响性能。

smallfiles = true

syncdelay:刷写数据到日志的频率,通过fsync操作数据。默认60秒。

syncdelay = 

默认就可以,不需要设置。不会对日志文件(journal files)有影响

警告:如果设置为0,SYNCDELAY 不会同步到磁盘的内存映射文件。在生产系统上,不要设置这个值。

sysinfo:系统信息,默认false。

设置为true,mongod会诊断系统有关的页面大小,数量的物理页面,可用物理​​页面的数量输出到标准输出。

Tue Jun  ::15.031 sysinfo:
Tue Jun ::15.035 page size:
Tue Jun ::15.035 _SC_PHYS_PAGES:
Tue Jun ::15.035 _SC_AVPHYS_PAGES:

当开启sysinfo参数的时候,只会打印上面的信息,不会启动mongodb的程序。所以要关闭该参数,才能开启mongodb。

upgrade:升级。默认为false。
当设置为true,指定DBPATH,升级磁盘上的数据格式的文件到最新版本。会影响数据库操作,更新元数据。大部分情况下,不需要设置该值。

traceExceptions:是否使用内部诊断。默认false。

traceExceptions = false

quiet:安静模式。

quiet = true

setParameter:2.4的新参数,指定启动选项配置。想设置多个选项则用一个setParameter选项指定,可以setParameter的参数请见这里,详情请见这里
声明setParameter设置在这个文件中,使用下面的格式:

setParameter = <parameter>=<value>

如配置文件里设置syncdelay:

setParameter = syncdelay= ,notablescan = true,journalCommitInterval = ,traceExceptions = true

Replication Options  复制选项

replSet:使用此设置来配置复制副本集。指定一个副本集名称作为参数,所有主机都必须有相同的名称作为同一个副本集。

oplogSize指定的复制操作日志(OPLOG)的最大大小。mongod创建一个OPLOG的大小基于最大可用空间量。对于64位系统,OPLOG通常是5%的可用磁盘空间。
一旦mongod第一次创建OPLOG,改变oplogSize将不会影响OPLOG的大小。

fastsync默认为false。在副本集下,设置为true,从一个dbpath里启用从库复制服务,该dbpath的数据库是主库的快照,可用于快速启用同步,否则的mongod将尝试执行初始同步。注意:如果数据不完全同步,mongod指定fastsync开启,secondary或slave与主永久不同步,这可能会导致显着的一致性问题。

replIndexPrefetch2.2版本出现的新参数,默认是all。可以设置的值有:all, none, and _id_only。只能在副本集(replSet)中使用。默认情况下,secondary副本集的成员将加载所有索引到内存中(从OPLOG之前的操作有关的)。您可以修改此行为,使secondary只会加载_id索引。指定_id_或none,防止mongod的任何索引加载到内存。

Master/Slave Replication:主从复制的相关设置

master:默认为false,当设置为true,则配置当前实例作为主实例。

master = true

slave:默认为false,当设置为true,则配置当前实例作为从实例。

slave = true

source默认为空,格式为:<host><:port>。用于从实例的复制:设置从的时候指定该选项会让从复制指定主的实例

source = 127.0.0.1:

only默认为空,用于从选项,指定一个数据库进行复制。

only = abc          #只同步abc集合(库)

slavedelay:设置从库同步主库的延迟时间,用于从设置,默认为0。

slavedelay = 60     #延迟60s同步主数据

autoresync:默认为false,用于从设置。是否自动重新同步。设置为true,如果落后主超过10秒,会强制从自动重新同步。如果oplogSize太小,此设置可能有问题。如果OPLOG大小不足以存储主的变化状态和从的状态变化之间的差异,这种情况下强制重新同步是不必要的。当设置autoresync选项设置为false,10分钟内从不会进行大于1次的自动重新同步。

autoresync = false

Sharded Cluster Options 分片集群设置

后续更新...

NoSQL之【MongoDB】学习(三):配置文件说明的更多相关文章

  1. [NoSql注入] MongoDB学习

    0x00 安装 下载:http://dl.mongodb.org/dl/win32/x86_64 安装:http://www.runoob.com/mongodb/mongodb-window-ins ...

  2. mongodb学习(三) 安装和基本CRUD

    菜鸟啊...先吐槽一下自己 发现mongodb已经升级到2.6标准版了.  服务端最新安装方法: http://www.cnblogs.com/lzrabbit/p/3682510.html 一 准备 ...

  3. MongoDB 学习三

    这章我们学习MongoDB的查询操作. Introduction to find find方法用于执行MongoDB的查询操作.它返回collecion中的documents子集,没有添加参数的话它将 ...

  4. MongoDB学习(三)

    MongoDB条件操作符 $gt  > 大于 $lt   < 小于 $gte >= 大于等于 $lte  <= 小于等于 $ne  !=  不等于 条件操作符可用于查询语句中, ...

  5. NoSQL数据库-MongoDB 学习(一)

    基本介绍 MongoDB 是为了快速开发互联网 Web 应用而设计的数据库系统 MongoDB 的设计目标是极简.灵活.作为 Web 应用栈的一部分 MongoDB 的数据模型是面向文档的,所谓文档是 ...

  6. MongoDb学习三(spring-data-mongodb)

    本文采用2个种配置方式.xml配置 代码配置方式进行数据库的连接.实现简单的增删该查等一些操作.代码都有注释官方文档如下https://docs.spring.io/spring-data/mongo ...

  7. Java开发学习(三十六)----SpringBoot三种配置文件解析

    一. 配置文件格式 我们现在启动服务器默认的端口号是 8080,访问路径可以书写为 http://localhost:8080/books/1 在线上环境我们还是希望将端口号改为 80,这样在访问的时 ...

  8. Java开发学习(三十七)----SpringBoot多环境配置及配置文件分类

    一.多环境配置 在工作中,对于开发环境.测试环境.生产环境的配置肯定都不相同,比如我们开发阶段会在自己的电脑上安装 mysql ,连接自己电脑上的 mysql 即可,但是项目开发完毕后要上线就需要该配 ...

  9. MongoDB学习笔记(三)--权限 && 导出导入备份恢复 && fsync和锁

    权限                                                                                             绑定内网I ...

  10. NoSQL数据库Mongodb副本集架构(Replica Set)高可用部署

    NoSQL数据库Mongodb副本集架构(Replica Set)高可用部署 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. MongoDB 是一个基于分布式文件存储的数据库.由 C ...

随机推荐

  1. android自定义控件(7)-获取自定义ImageView的src属性

    创建一个自定义组件,继承 ImageView.在我的 xml 布局文件中是这样设置的: <Mycomponent android:src="@drawable/my_test_imag ...

  2. mysql explain详解

    对于经常使用mysql的兄弟们,对explain一定不会陌生.当你在一条SELECT语句前放上关键词EXPLAIN,MySQL解释它将如何处理SELECT,提供有关表如何联合和以什么次序的信息.借助于 ...

  3. 安装windows后重新修复grub2的引导

    前段时间,我的用的双系统windows8.1 + fedora 21 workstation,使用grub2引导fedora和windows8.1的启动.由于一些原因,导致我的windows8.1无法 ...

  4. Teradata SQL programming

    Teradata的SQL设计和Oracle真不是一个水平, 一点美感的没有.  上个世纪它靠着MPP一招鲜吃变天, 居然做了十多年数据仓库的老大,  时过境迁, 现在有不少SQL On Hadoop ...

  5. 【UEditor】 UEditor整合项目上传资源到阿里云服务器

    目录 关于此文 下载源码 JSP代码 Java代码 阿里云jar包引入配置 成功啦! 回到顶部 关于此文 项目中要实现编辑器生成带格式的html文档,存入模板,最后生成html的URL,所以选择了UE ...

  6. ios修改textField的placeholder的字体颜色和大小

    textField.placeholder = @"username is in here!"; [textField setValue:[UIColor redColor] fo ...

  7. C#2.0 特性

    泛型 迭代器 分布类 可空类型 匿名方法 命名空间别名限定符 静态类 外部程序程序集别名 属性访问器可访问性 委托中的协变和逆变 如何声明.实例化.使用委托 固定大小的缓冲区 友元程序集 内联警告控制 ...

  8. VCF (Variant Call Format)格式详解

    文章来源:http://www.cnblogs.com/emanlee/p/4562064.html VCF文件示例(VCFv4.2) ##fileformat=VCFv4.2 ##fileDate= ...

  9. 网页兼容浏览器测试工具Multibrowser

    网页兼容性测试工具(MultiBrowser),有firefox,chrome,IE 下载

  10. iOS 8 Xcode6 设置Launch Image 启动图片

    本人apem http://www.mamicode.com/info-detail-494411.html 如何设置App的启动图,也就是Launch Image? Step1 1.点击Image. ...