MongoDB启动配置,看似简单,实则暗藏诸多易踩坑细节,像默认数据目录不存在,会直接致使服务启动失败,而系统文件打开数限制过低,可能令高性能数据库变得极其缓慢。

数据目录与端口配置

在解压之后的基础配置里,MongoDB默认将/data/db用作数据存储的目录,于Windows系统当中它对应的是C:datadb。

./mongod --dbpath /path/mongodb --bind_ip 10.10.10.10 --port 27021  //启动绑定固定的IP地址、端口

倘若此目录并不存在,或者当前的用户并不具备写入权限,那么数据库服务将会立刻开始引发启动失败的情况,并且会产生报错。

默认被绑定的服务端口为27017,而此端口乃是MongoDB的官方默认端口。

./mongod --dbpath /path/mongodb --bind_ip 10.10.10.10 --port 27021 &

可让开发者,经由--dbpath参数,于启动命令里,去指定自行定义的数据目录路径举例来说,在Linux系统之上,运用./mongod --dbpath /var/lib/mongo命令。

./mongod --dbpath /path/mongodb --bind_ip 10.10.10.10 --port 27021 --fork=true --logpath=/path/mongod.log

港口的改动是借助--port这一参数来达成的,举例来讲,将其设定为28、017这个端口,以供测试的环境去使用。

前台启动方式

port=27018                          //绑定的端口
bind_ip=10.10.10.10                 //绑定的ip,可绑定多个用","分开
dbpath=/data/db                     //mongodb数据文件存储路径
logpath=/data/db/mongod.log         //mongod的日志路径
pidfilepath=/data/db/mongod.pid
logappend=true                      //日志使用追加代替覆盖
fork=true

./mongod -f ../conf/mongo.conf 

在Linux系统里,直接于终端执行mongod命令,会以一种前台模式来启动数据库。

在这种模式当中,全部日志信息都会于终端窗口实时呈现,一旦将终端关闭,或者按下Ctrl+C,那么服务就会被终止。

进行临时测试时,开发人员常常运用这种方式,这是由于能够随时瞧见详细的启动日志,也能看到错误信息。

在Windows系统里面,通过进行双击操作,以此去执行mongod.exe这个文件,同样的,这样做也会启动一个处于前台的进程窗口。

需要留意的是,在启动时不添加任何参数的状况下,服务会采用默认的数据目录以及 27017 端口,在本机那儿借助 mongo shell 能够直接进行连接,这极为适合用于快速验证安装是不是成功了。

MongoDB shell version: 3.2.11
connecting to: test
Server has startup warnings: 
2017-05-09T12:34:19.688-0700 I CONTROL  [initandlisten] 
2017-05-09T12:34:19.688-0700 I CONTROL  [initandlisten] ** WARNING: soft rlimits too low. rlimits set to 1024 processes, 64000 files. Number of processes should be at least 32000 : 0.5 times number of files.

后台运行方法

如需使MongoDB于后台进行持续运转,那么能够于启动命令之后增添"&"符号,比如说mongod --fork。

这个参数专门用于将服务进程放到后台执行。

*          soft    nproc     1024  
改为:  
*          soft    nproc     65536

在使用的时候,若要使用--fork,那么就必须配合着--logpath参数,去指定日志文件的路径,不然的话,就不能够成功启动。

开启配置文件是在生产环境里最为常用的启动方式,借助指定mongo.conf文件去加载全部配置参数。

于配置文件里头能够设定processManagement的fork为true,与此同时去指定日志文件的路径以及日志输出方式,就如采用logAppend为true免得每次启动之时覆盖日志内容。

mongod soft nofile 65536  
mongod hard nofile 65536  
mongod soft nproc 65536  
mongod hard nproc 65536  

启动参数详解

-f (file size): unlimited  
-t (cpu time): unlimited  
-v (virtual memory): unlimited  
-n (open files): 64000  
-m (memory size): unlimited  
-u (processes/threads): 64000  

用于指定数据库文件存储位置的参数是storage.dbPath,将其存放在独立的磁盘分区,以此来提高性能,这种做法是被建议的。

数据库MongoDB部署_mongodb启动参数配置_mongod启动方式详解

日志文件的保存路径是由systemLog.path参数进行设置的,当systemLog.logAppend参数被设置成为true时,日志写入的方式将是以追加的模式,而并非是在每次启动的时候去覆盖原有的日志。

用于限制服务监听网络接口的net.bindIp参数,被设置为能够只允许本地访问的127.0.0.1。

net.port参数配置服务端口。

./mongo [--host] 10.10.10.10:27018

对访问权限进行管控的是security.authorization参数,而设置为true的storage.journal.enabled参数会开启在进行写操作之际先书写日志,以在遭遇意外宕机期间能够可实现数据恢复功能在内的日志功能,确保的内容会通过这个设置而来实现。

启动警告与系统优化

> help

在启动MongoDB的时候,常常会碰到“soft rlimits too low”这样的警告,它提示当下系统的文件打开数限制是1024,然而建议的值最少得是32000。

这个限制直接影响到数据库的并发连接能力和性能表现。

> db.help()

根据着官方给出的建议,nproc限制需要被设置成为0.5去乘上文件打开数限制,这一数值也就是至少32000。

> db.foo.help()

解决这个问题需要修改操作系统的限制配置。

于Linux系统里,对/etc/security/limits.d/90-nproc.conf文件予以编辑,增添mongod用户的nofile限制。

> db.foo.update

在系统中,要对 /etc/security/limits.conf 文件加以修改设置,设置好软硬限制之后要重启系统或者重新去登录,如此才能让配置生效。

Mongo Shell使用技巧

> rs.help()

由MongoDB所自带的JavaScript shell,它属于一个功能完备的交互式解释器。

在Linux系统环境之中,借助bin目录里头的mongo命令,就能够进入到本地的shell环境里。

> sh.help()

把内置帮助文档在键入help时予以查看,将数据库级别帮助借助db.help()来进行查看,借由db.collection.help()看过来看集合级别帮助。

于shell里头直接键入函数名能够查看函数的实现代码呀,如此这般对于理解内部机制是颇具助力的呢。

执行外部脚本文件,可借助load函数在交互式shell里进行,那些频繁被使用的脚本,能够添加至.mongorc.js文件当中,如此一来,每当启动shell之际,便会自动开展加载执行操作。

mongo script1.js script2.js script3.js

生产环境里,你是否碰到过,因系统存在限制,致使MongoDB性能出现异常的情况呢?

mongo --quiet server-1:30000/foo script1.js script2.js

热忱欢迎于评论区域之中分享你自身的经验,作出点赞这一行为以使更多的开发者能够目睹这些配置方面地细节!

>load("script1.js")