目錄
MongoDB實例的運行離不開相應的參數配置,比如對數據庫存放路徑dbpath的配置,對於參數的配置,可以在命令行以選項的形式進行配置,也可以將配置信息列入配置文件進行配置。但是,使用配置文件將會使對mongod和mongos的管理變得更加容易,本篇將會對配置文件進行詳細的講解。
1 數據庫環境
[mongod@strong ~]$ mongod --version
db version v4.2.0
git version: a4b751dcf51dd249c5865812b390cfd1c0129c30
OpenSSL version: OpenSSL 1.0.1e-fips 11 Feb 2013
allocator: tcmalloc
modules: none
build environment:
distmod: rhel62
distarch: x86_64
target_arch: x86_64
2 配置文件
2.1 配置文件格式
MongoDB配置文件使用YAML的格式。
2.2 配置文件的使用
對於配置文件的使用,在mongod或mongos中指定--config或-f選項。
1)指定--config選項
[mongod@strong ~]$ mongod --config /etc/mongo.cnf
2)指定-f選項
[mongod@strong ~]$ mongod -f /etc/mongo.cnf
3 配置文件核心選項
3.1 systemLog選項
1)選項
systemLog:
verbosity: <int>
quiet: <boolean>
traceAllExceptions: <boolean>
syslogFacility: <string>
path: <string>
logAppend: <boolean>
logRotate: <string>
destination: <string>
timeStampFormat: <string>
component:
accessControl:
verbosity: <int>
command:
verbosity: <int>
# COMMENT additional component verbosity settings omitted for brevity
2)說明
- verbosity:默認為0,值范圍為0-5,用於輸出日志信息的級別,值越大,輸出的信息越多;
- quiet:mongod或mongos運行的模式,在該模式下限制輸出的信息,不推薦使用該模式;
- traceAllExceptions:打印詳細信息以便進行調試;
- path:日志文件的路徑,mongod或mongos會將所有診斷日志信息發送到該位置,而不是標准輸出或主機的syslog上;
- logAppend:默認為false,若設為true,當mongod或mongos實例啟動時,會將新的條目追加到已存在的日志文件,否則,mongod會備份已存在的日志,並創建新的日志文件;
- destination:指定日志輸出的目的地,具體值為file或syslog,若設置為file,需指定path,該選項未指定,則將所有日志輸出到標准輸出;
- timeStampFormat:日志信息中的時間格式,默認為iso8601-local,該選項有三個值,分別為ctime、iso8601-utc和iso8601-local;
3.2 processManagement選項
1)選項
processManagement:
fork: <boolean>
pidFilePath: <string>
timeZoneInfo: <string>
2)說明
- fork:默認值為false,設置為true,會激活守護進程在后台運行mongod或mongos進程;
- pidFilePath:指定mongod或mongos寫PID文件的路徑,不指定該值,則不會創建PID文件;
3.3 cloud選項
1)選項
cloud:
monitoring:
free:
state: <string>
tags: <string>
2)說明
- state:激活或禁用免費的MongoDB Cloud監控,該選項有以下三個值,分別為runtime、on和off,默認為runtime;在運行時可以通過db.enableFreeMonitoring()和db.disableFreeMonitoring()
- tags:描述環境上下文的可選標記;
3.4 net選項
1)選項
net:
port: <int>
bindIp: <string>
bindIpAll: <boolean>
maxIncomingConnections: <int>
wireObjectCheck: <boolean>
ipv6: <boolean>
unixDomainSocket:
enabled: <boolean>
pathPrefix: <string>
filePermissions: <int>
tls:
certificateSelector: <string>
clusterCertificateSelector: <string>
mode: <string>
certificateKeyFile: <string>
certificateKeyFilePassword: <string>
clusterFile: <string>
clusterPassword: <string>
CAFile: <string>
clusterCAFile: <string>
CRLFile: <string>
allowConnectionsWithoutCertificates: <boolean>
allowInvalidCertificates: <boolean>
allowInvalidHostnames: <boolean>
disabledProtocols: <string>
FIPSMode: <boolean>
compression:
compressors: <string>
serviceExecutor: <string>
2)說明
- port:MongoDB實例監聽客戶端連接的TCP端口,對於mongod或mongos實例,默認端口為27017,對於分片成員,默認端口為27018,對於配置服務器成員,默認端口為27019;
- bindIp:默認值為localhost。主機名、IP地址或Unix套接字,mongod或mongos在其上監聽客戶端的連接,綁定多個地址,以逗號分隔,若綁定所有IPv4地址,可輸入0.0.0.0;
- bindIpAll:默認值為false,設置為true,mongod或mongos實例將會綁定所有IPv4地址;
- maxIncomingConnections:默認值為65536,mongod或mongos接收的最大連接數;
3.5 security選項
1)選項
security:
keyFile: <string>
clusterAuthMode: <string>
authorization: <string>
transitionToAuth: <boolean>
javascriptEnabled: <boolean>
redactClientLogData: <boolean>
clusterIpSourceWhitelist:
- <string>
sasl:
hostName: <string>
serviceName: <string>
saslauthdSocketPath: <string>
enableEncryption: <boolean>
encryptionCipherMode: <string>
encryptionKeyFile: <string>
kmip:
keyIdentifier: <string>
rotateMasterKey: <boolean>
serverName: <string>
port: <string>
clientCertificateFile: <string>
clientCertificatePassword: <string>
clientCertificateSelector: <string>
serverCAFile: <string>
ldap:
servers: <string>
bind:
method: <string>
saslMechanisms: <string>
queryUser: <string>
queryPassword: <string>
useOSDefaults: <boolean>
transportSecurity: <string>
timeoutMS: <int>
userToDNMapping: <string>
authz:
queryTemplate: <string>
2)說明
- keyFile:存儲共享密鑰文件的路徑,MongoDB實例使用它在分片集群或副本集中彼此進行身份驗證;
- clusterAuthMode:默認值為keyFile;
3.6 setParameter選項
1)選項
setParameter:
<parameter1>: <value1>
<parameter2>: <value2>
2)說明
設置MongoDB服務器的參數;
3.7 storage選項
1)選項
storage:
dbPath: <string>
indexBuildRetry: <boolean>
journal:
enabled: <boolean>
commitIntervalMs: <num>
directoryPerDB: <boolean>
syncPeriodSecs: <int>
engine: <string>
wiredTiger:
engineConfig:
cacheSizeGB: <number>
journalCompressor: <string>
directoryForIndexes: <boolean>
collectionConfig:
blockCompressor: <string>
indexConfig:
prefixCompression: <boolean>
inMemory:
engineConfig:
inMemorySizeGB: <number>
2)說明
- dbPath:默認值為/data/db,mongod實例存儲數據的目錄;
- indexBuildRetry:默認值為true,指定mongod在下次啟動時是否重建未完成的索引;
- enabled:64位系統默認為true,32位系統默認為false,是否激活日志以確定數據文件仍然有效以及可進行恢復;
- commitIntervalMs:默認值為100毫秒,取值范圍為1-500毫秒;
- directoryPerDB:默認值為false,設置為true,每個數據庫使用單獨的目錄存儲數據,目錄位於dbPath目錄之下;
- syncPeriodSecs:默認值為60,MongoDB通過fsync操作將數據刷新到數據文件之前經過的時間;
- engine:默認值為wireTiger,4.2版本之后,MMAPv1存儲引擎將會被廢棄;
- cacheSizeGB:定義wireTiger將為所有數據使用的內部緩存的大小,索引構建消耗的內存與wireTiger緩存內存時分開的,從MongoDB 3.4開始,該值的范圍可以從0.25GB到10000GB,可以是浮點數,默認值是50%*( RAM - 1 GB )或256MB;
- journalCompressor:默認值為snappy,指定用於壓縮wireTiger日志數據的壓縮類型,壓縮類型有以下幾種,分別為none、snappy、zlib和sztd;
- directoryForIndexes:默認為false,設置為true,mongod將索引和集合存儲在data(dbPath)目錄下的單獨子目錄中,即索引存放在名字為index的子目錄中,集合數據存放在名字為collection的子目錄中;
- blockCompressor:默認為snappy,指定集合數據的默認壓縮類型,有以下幾種類型,分別為none、snappy、zlib和sztd;
- prefixCompression:默認為true,啟用或禁用索引數據的前綴壓縮;
3.8 operationProfiling選項
1)選項
operationProfiling:
mode: <string>
slowOpThresholdMs: <int>
slowOpSampleRate: <double>
2)說明
- mode:默認為off,指定應該分析哪些操作,分析器級別有如下幾種,分別為off、slowOp和all;
- slowOpThresholdMs:默認值為100;
- slowOpSampleRate:默認值為1.0;
3.9 replication選項
1)選項
replication:
oplogSizeMB: <int>
replSetName: <string>
secondaryIndexPrefetch: <string>
enableMajorityReadConcern: <boolean>
2)說明
- oplogSizeMB:復制操作日志的最大大小,以M為單位,默認情況下,mongod進程基於最大可用空間創建oplog,對於64位系統,oplog通常占可用磁盤空間的5%;
- replSetName:副本集的名稱;
- enableMajorityReadConcern:默認為true,在PSA架構中,可以禁用該選項以緩解存儲緩存的壓力;
3.10 sharding選項
1)選項
sharding:
clusterRole: <string>
archiveMovedChunks: <boolean>
2)說明
- clusterRole:設置在分片集群中mongod實例的角色,有以下值可供選擇,分別為configsvr和shardsvr;
3.11 auditLog選項
1)選項
auditLog:
destination: <string>
format: <string>
path: <string>
filter: <string>
2)說明
企業版選項,用於審計;
3.12 snmp選項
1)選項
snmp:
disabled: <boolean>
subagent: <boolean>
master: <boolean>
2)說明
- disabled:默認值為false,禁用SNMP對mongod的訪問;