MongoDB系统主程序为mongod。它处理数据请求,管理数据访问,并进行后台管理操作。
下面详细介绍常用的命令行选项,这些命令行选项主要用于测试:在产生环境中,使用配置文件选项来控制数据库的行为才是正确的。
[root@node1 ~]# mongod -help
一、General options(通用选项):
-h | –help
#查看帮助。
-f <filename> |–config <filename>
#用于运行mongod时指定其配置文件的选项。
-v | –verbose
–version
#用来查看mongodb版本信息。
–quiet
#静默模式,mongod将会尝试减少日志的输出量,不建议在production环境下开启,否则将会导致跟踪错误比较困难。
–port 27017
#mongod侦听端口,默认为27017;不过因为mongodb有2种典型的架构模式:replica set和sharding,如果开发者在一个节点上部署多个mongod实例,需要注意修改此端口以避免冲突。
–bind_ip 0.0.0.0
#mongod进程绑定的IP,application通过此IP、port建立链接。可以绑定在任意网卡接口上,如果你的mongos/mongod只需要内网访问,可以绑定在内网IP(例如:192.168.1.100),如果需要外网访问,那么则绑定外网IP,如果此值为“0.0.0.0”,则绑定到所有接口即内网、外网IP均可以访问。(不建议)可以绑定都多个ip上,ip地址之间用“,”分割。
–ipv6
#是否支持mongod多个实例之间使用IPV6网络,如果启动,那么此值需要在整个cluster中保持一致。
–maxConns <number>
# mongod进程允许的最大连接数,如果此值超过操作系统配置的连接数阀值,将不会生效(ulimit);默认值为65536。通常客户端将会使用连接池机制,可以有效的控制每个客户端的链接个数。
–logpath <PATH>
#将所有诊断日志信息写入日志文件而不是标准输出或主机的日志系统。MongoDB在你指定的路径创建日志文件。默认情况下,MongoDB将会备份当前日志文件,然后创建一个新的日志文件。如果想要追加到日志文件,需要设置–logAppend选项。
–syslog
#将所有的日志输出,主机的日志系统而不是标准输出或日志文件,不能与–logpath一起使用。–logpath选项不支持Windows。
–syslogFacility
#指定用于登录时信息到syslog Facility水平,你指定的值必须由你的操作系统实现支持syslog。要使用此选项,您必须启用– syslog。
–logappend
#将在现有日志的尾部继续添加日志。否则,将会备份当前日志文件,然后创建一个新的日志文件,配合–logpath一块使用。
–logRotate rename
#日志回转,防止一个日志文件特别大,则使用logRotate指令将文件“回转”,可选值:
1)rename:重命名日志文件,默认值。
2)reopen:使用linux日志rotate特性,关闭并重新打开此日志文件,可以避免日志丢失,但是logAppend必须为true。
–timeStampFormat iso8601-local
#指定日志格式的时间戳格式,有如下值:
ctime:显示时间戳如:Wed Dec 31 18:17:54.811。
Iso8601-utc:显示时间戳以协调通用时间(UTC)在ISO-8601中的格式,例如,纽约时代的开始时间:1970-01-01t00:00: 00.000z。
iso8601-local:显示当地时间ISO-8601格式显示时间戳。
–pidfilepath <path>
#配合–fork选项,将mongod进程ID写入指定的文件,如果不指定,将不会创建PID文件。
–keyFile <file>
#集群的私钥的完整路径,只对于集群和复制集架构有效,指定存储身份验证信息的密钥文件的路径。
–clusterAuthMode
#用于群集身份验证的身份验证模式,默认为keyFile,此选项可以有下列值之一:集群认证模式:
keyFile:使用密钥文件认证,配合–keyFile。
sendkeyFile:为滚动升级用途,发送一个密钥文件的认证,但可以接受他和X.509证书。
sendX509:为滚动升级用途,发送认证的X.509证书。
X509:推荐,发送验证X.509证书和只接受X.509证书。
–setParameter <options>
#设置Mongodb服务器的参数,MongoDB服务器参数参考地址https://docs.mongodb.org/manual/reference/parameters/。
–httpinterface
#启用HTTP接口,启用该接口可增加安全隐患,默认关闭。
–nounixsocket
–unixSocketPrefix <path>
–filePermissions <path>
#这三个参数都是适用于Unix系统,启用或禁用监听Unix域套接字,仅适用于基于UNIX的系统。以及设置套接字后缀和套接字文件的权限。
–fork
#以fork模式运行mongod进程,默认情况下,mongod不作为守护进程运行。
–auth
#启用验证。用户认证,默认false,不需要认证。–auth允许控制用户访问数据库资源和操作的权限。当授权启用,MongoDB要求所有客户端验证。进入数据库需要auth验证。配置用户通过Mongo shell。如果没有用户的存在,本地主机接口将继续访问数据库直到你创建的第一个用户。具体授权可以看https://docs.mongodb.org/manual/security/。
–noauth
#禁用验证,目前默认。
–jsonp
#允许JSONP通过HTTP接口,– JSONP选项启用HTTP接口,即使HTTP选项被禁用。
–rest
#使一个简单的 REST API,开启后,在MongoDB默认会开启一个HTTP协议的端口提供REST的服务(nohttpinterface = false),这个端口是你Server端口加上1000,即28017,默认的HTTP端口是数据库状态页面,(开启后,web页面的Commands 行中的命令都可以点进去)。
mongodb自带的REST,不支持 增、删、改,同时也不支持 权限认证。
–slowms 100
mongod将会把慢查询记录到日志中,即使profiler被关闭。当profiler开启时,慢查询记录还会被写入“system.profile”这个系统级的collection中。请参看mongod profiler相关文档。默认值为100。
–profile <level>
数据库profiler级别,操作的性能信息将会被写入日志文件中,可选值:
1)off:关闭profiling
2)slowOp:on,只包含慢操作日志
3)all:on,记录所有操作
数据库profiling会影响性能,建议只在性能调试阶段开启。此参数仅对mongod有效。
–cpu
#定期显示CPU的CPU利用率和iowait,置为true会强制mongodb每4s报告cpu利用率和io等待,把日志信息写到标准输出或日志文件。默认为false。
–sysinfo
#返回诊断系统信息,然后退出。该信息提供了页面大小、物理页的数量和可用的物理页的数量。
–noIndexBuildRetry
#禁止索引重建,当构建索引时mongod意外关闭,那么再次启动是否重新构建索引;索引构建失败,mongod重启后将会删除尚未完成的索引,但是否重建由此参数决定。
–noscripting
#禁止脚本引擎,默认为false不禁止。
–notablescan
#禁止要求表扫描的操作,默认为false不禁止。
–shutdown
# 安全终止mongod进程,当调用mongod这个选项必须设置独立的选项。
二、Storage options(存储选项):
–storageEngine wiredTiger
从mongodb3.2开始,官方已经开始默认使用wiredTiger存储引擎,在3.2之前默认使用mmapv1存储引擎。mongodb数据库的存储引擎,可用的值包括:
mmapv1:指定mmapv1存储引擎(3.2之前默认使用)
wiredTiger:指定wiredTiger存储引擎(3.2开始默认使用)
inMemory:指定内存存储引擎(在3.2还是bate版本)
–dbpath <path>
#Mongodb实例的数据存储目录,默认为/data/db(目录需自行构建)。
–directoryperdb
#使用一个单独的目录来存储每个数据库的数据,目录在–dbpath目录下,每个子目录名对应的数据库名称。
–noprealloc
#默认禁用数据文件预分配,往往影响性能,使用预分配方式来保证写入性能的稳定,预分配在后台进行,并且每个预分配的文件都用0进行填充。这会让MongoDB始终保持额外的空间和空余的数据文件,从而避免了数据增长过快而带来的分配磁盘空间引起的阻塞。
–nssize <value>
#命名空间的文件(即NS)的默认大小,默认16M,最大2G。所有新创建的默认大小命名空间的文件(即NS)。使用此设置为新创建的命名空间文件设置大小,此选项不影响现有文件。一个命名空间的文件的最大大小为2047 MB,16 MB的默认值提供了大约24000的命名空间。
–quota
#为每个数据库可以有数个数据文件的最大限度,当运行–quota选项,MongoDB最多有8个数据文件,每个数据库调整定额可以使用–quotaFiles。
–quotaFiles <num>
#修改每个数据库的数据文件的数量上的限制,–quotafiles选项需要您设置–quota。
–smallfiles
#设置MongoDB使用较小的默认文件大小,–smallfiles选项减少了数据文件和限制最大大小为512 MB的初始大小。–smallfiles也减少了每个日志文件的大小从1字节到128字节,如果你有大量的数据库,且每个持有少量的数据,那么就可以使用–smallfiles
–syncdelay
#数据写入磁盘的时间秒数(0=never,成为内存数据库,不推荐)。系统同步刷新磁盘的时间,单位为秒,默认是60 秒。警告:如果设置为0,SYNCDELAY 不会同步到磁盘的内存映射文件。在生产系统上,不要设置这个值。
–upgrade
#如果需要升级数据库,默认false。启动后,指定DBPATH,升级磁盘上的数据格式的文件到最新版本。会影响数据库操作,更新元数据。大部分情况下,不需要设置该值。
–repair
#在所有数据库上运行一个修复程序,这相当于关闭所有数据库运行db.repairDatabase(‘xxx’)数据库命令。启动后修复所有数据库,设置这个选项最好在命令行上,而不是在配置文件或控制脚本。启动时修复,需要关闭journal:/var/log/mongodb # mongod –repair。并且启动时,用控制文件指定参数和配置文件里指定参数的方式进行修复之后,(修复信息见log),需要再禁用repair参数才能启用mongodb。
–repairpath
#修复库生成的文件的目录,默认为目录名称dbpath。执行repair 时的临时目录,在如果没有开启journal的情况下,异常down 机后重启,必须执行repair。
–journal
#启用日志选项,MongoDB的数据操作将会写入到journal文件夹的文件里。开启日志功能,通过保存操作日志来降低单机故障的恢复时间,设置为true,启用操作日志,以确保写入持久性和数据的一致性,会在dbpath目录下创建journal目录。
–nojournal
#不开启日记记录,默认为false。
–journalOptions
#启用日志诊断选项,不为一般用途,提供测试功能,并会影响数据文件完整性的情况下的异常系统关机。
–journalCommitInterval
# mongod日志刷新值范围从1到500毫秒。较低的值增加了杂志的耐久性,以牺牲性能为代价,在wiredtiger引擎上,默认的日志提交间隔为100毫秒。建议不要修改。
三、WiredTiger options(wiredTiger引擎选项):
–wiredTigerCacheSizeGB
#wiredtiger将使用所有数据的最大缓存大小,wiredTiger缓存工作集(working set)数据的内存大小,单位:GB,此值决定了wiredTiger与mmapv1的内存模型不同,它可以限制mongod对内存的使用量,而mmapv1则不能(依赖于系统级的mmap)。默认情况下,cacheSizeGB的值为假定当前节点只部署一个mongod实例,在MongoDB 3,默认情况下,wiredtiger缓存,使用1 GB或安装的物理内存的一半,以较大者为准。如果当前节点部署了多个mongod进程,那么需要合理配置此值。如果mongod部署在虚拟容器中(比如,lxc,cgroups,Docker)等,它将不能使用整个系统的物理内存,则需要适当调整此值。默认值为物理内存的一半。
–wiredTigerStatisticsLogDelaySecs
#默认关闭wiredtiger不做日志统计。
–wiredTigerJournalCompressor
# journal日志的压缩算法,默认为“snappy“,可选值为“none”、“snappy”、“zlib”。
–wiredTigerDirectoryForIndexes
#是否将索引和collections数据分别存储在dbPath单独的目录中。即index数据保存“index”子目录,collections数据保存在“collection”子目录。默认值为false。
–wiredTigerCollectionBlockCompressor
# collection数据压缩算法,可选值“none”、“snappy”、“zlib”。开发者在创建collection时可以指定值,以覆盖此配置项。如果mongod中已经存在数据,修改此值不会带来问题,旧数据仍然使用原来的算法解压,新数据文件将会采用新的解压缩算法。
–wiredTigerIndexPrefixCompression
#是否对索引数据使用“前缀压缩”(prefix compression,一种算法)。前缀压缩,对那些经过排序的值存储,有很大帮助,可以有效的减少索引数据的内存使用量。默认值为true。
四、Replica set options(复制集选项)
–replSet
#设置副本集名称,所有主机都必须有相同的名称作为同一个副本集。
–oplogSize
#设置oplog的大小(MB),一旦mongod第一次创建OPLOG,改变oplogSize将不会影响OPLOG的大小。对于64位系统,OPLOG通常是5%的可用磁盘空间。
–replIndexPrefetch
#默认是all,可以设置的值有:all, none, _id_only。只能在副本集(replSet)中使用。默认情况下,secondary副本集的成员将加载所有索引到内存中(从OPLOG之前的操作有关的)。您可以修改此行为,使secondary只会加载_id索引。指定_id_或none,防止mongod的任何索引加载到内存。
–enableMajorityReadConcern
#是否开启readConcern的级别为“majority”,默认为false;只有开启此选项,才能在read操作中使用“majority”。(3.2+版本)
五、Sharding options(分片选项)
–configsvr
#集群角色,声明这是一个集群的config服务,默认端口27019,默认目录/data/configdb。
–shardsvr
#集群角色,声明这是一个集群的分片,默认端口27018。
–configsvrMode
当chunks因为“负载平衡”而迁移到其他节点时,mongod是否将这些chunks归档,并保存在dbPath下“moveChunk”目录下,mongod不会删除moveChunk下的文件。默认为true。
除了上面一些可能会经常用到的命令行选项外,还有一些可能不太常用的,这里就不介绍了,如果用到时,直接去官网查询即可。
六、TLS/SSL Options
–sslOnNormalPorts
–sslMode <mode>
–sslPEMKeyFile <filename>
–sslPEMKeyPassword <value>
–clusterAuthMode <option>
–sslClusterFile <filename>
–sslClusterPassword <value>
–sslCAFile <filename>
–sslAllowInvalidCertificates
–sslAllowInvalidHostnames
–sslAllowConnectionsWithoutCertificates
–sslDisabledProtocols <protocol(s)>
–sslFIPSMode
七、Audit Options
–auditDestination
–auditFormat
–auditPath
–auditFilter
八、SNMP Options
–snmp-subagent
–snmp-master
九、inMemory Options
–inMemorySizeGB <integer>
–inMemoryStatisticsLogDelaySecs <integer>
十、Encryption Key Management Options
–enableEncryption <boolean>
–encryptionCipherMode <string>
–encryptionKeyFile <string>
–kmipKeyIdentifier <string>
–kmipRotateMasterKey <boolean>
–kmipServerName <string>
–kmipPort <number>
–kmipClientCertificateFile <string>
–kmipClientCertificatePassword <string>
–kmipServerCAFile <string>
十一、Text Search Options
–basisTechRootDirectory <path>
参考: https://docs.mongodb.org/manual/reference/program/mongod/