mongodb yaml格式配置文件模板:
Go to github
各個配置項的詳細介紹請?zhí)D(zhuǎn)MongoDB官網(wǎng)
systemLog: #日志設(shè)置
verbosity: 1 #默認值0,日志輸出詳細度,1-5日志越來越細
quiet: false #靜默模式,限制輸出,生產(chǎn)環(huán)境中不建議設(shè)置為true
traceAllExceptions: true #打印詳細的調(diào)試信息
syslogFacility: "root" #記錄日志的設(shè)備級別,如果設(shè)置了此項,必須將systemLog.destination設(shè)置為syslog
path: "/usr/local/var/log/mongod.log" #mongodb日志的存放目錄
logAppend: true #為true,則mongodb每次重啟時日志都會以追加的形式記錄到文件里,否則則會備份既有的文件,并且重新創(chuàng)建新的日志文件
logRotate: "reopen" #rename:重命名日志文件 reopen:按照Linux/Unix日志反轉(zhuǎn)行為來關(guān)閉或者重新打開日志文件,設(shè)置為reopen時必須同時設(shè)置systemLog.logAppend為true
destination: file #日志記錄,file或者syslog,如果指定為file,需要同時指定path,如果沒有設(shè)置此項,則所有日志都將被輸出到標準輸出,為了保證精確的時間,生產(chǎn)環(huán)境建議配置為file
timeStampFormat: "iso8601-local" #日志信息的時間格式,ctime(格式為Wed Dec 31 18:17:54.811), iso8601-utc(格式為1970-01-01T00:00:00.000Z), iso8601-local(格式為1969-12-31T19:00:00.000-0500)
processManagement: #進程管理
fork: false #是否開啟daemon模式
pidFilePath: "/var/run/mongod.pid" #pid文件存放位置,注意目錄權(quán)限
timeZoneInfo: "/usr/share/zoneinfo" #時區(qū)數(shù)據(jù)庫,如果沒配置,則mongo會使用內(nèi)置的時區(qū)數(shù)據(jù)庫,linux和macOs默認設(shè)置為/usr/share/zoneinfo
windowsService: #windowns系統(tǒng)上的相關(guān)配置
serviceName: MongoDB #作為windows服務(wù)運行是的服務(wù)名
displayName: MongoDB #在Windows系統(tǒng)中Services administrative application展示的名字
description:
serviceUser:
servicePassword:
cloud: #4.0版本新功能
monitoring:
free:
state: runtime #runtime: 運行中可以啟用或者停用免費監(jiān)控; on: 啟動時開啟免費監(jiān)控,運行時無法停用; off: 啟動時停用免費監(jiān)控,運行時無法啟用
tags: ""
net: #網(wǎng)絡(luò)配置
port: 27017 #端口
bindIp: 127.0.0.1 #從v3.6開始默認值為localhost,如果需要添加多個,使用,分割,支持IPV6,需要設(shè)置ipv6為true
bindIpAll: false #v3.6之后支持,為true時支持所有的IPV4,如果設(shè)置ipv6為true,則也支持所有的ipv6,注意:暴露在公網(wǎng)時,需要防止未授權(quán)的訪問
maxIncomingConnections: 65536 #同時接受的最大連接數(shù),不要將此項的值設(shè)置得太低,否則會遇到錯誤在正常操作時
wireObjectCheck: false #如果為true,會阻止客戶端插入畸形或者無效的BSON數(shù)據(jù)到數(shù)據(jù)庫
ipv6: true #支持IPV6,默認不支持
unixDomainSocket:
enabled: false #默認值true,僅適用于類unix系統(tǒng),啟用或停用Unix域套接字通信
pathPrefix: "/tmp" #默認值/tmp, 如果沒設(shè)置,則會創(chuàng)建以/tmp為前綴的socket
filePermissions: 0700 #socket file文件的權(quán)限
tls:
mode: disabled #disabled: 不使用TLS allowTLS: 服務(wù)之間不使用TLS, 客戶端連接同時支持TLS和非TLS preferTLS: 服務(wù)之間使用TLS,客戶端都支持 requireTLS: 只接受TLS加密的連接
certificateKeyFile: "/usr/local/etc/test.pem" #同時包含證書和密鑰的.pem文件,如果TLS開啟,Linux系統(tǒng)必須指定certificateKeyFile,windows和macOS系統(tǒng)必須指定certificateKeyFile和certificateSelector中的一個
certificateKeyFilePassword: "test" #用于解密證書文件的密碼
certificateSelector: subject="證書名" #從系統(tǒng)證書目錄中選取匹配的證書
clusterCertificateSelector: subject="證書名" #
clusterFile: "/usr/local/etc/test.pem"
clusterPassword: "" #解密clusterFile證書的密碼
CAFile: "/usr/local/etc/rootCA.pem" #根證書
clusterCAFile: "/usr/local/etc/rootCA.pem"
CRLFile: "" #證書吊銷列表
allowConnectionsWithoutCertificates: false #是否允許客戶端連接不通過TLS/SSL證書建立連接
allowInvalidCertificates: false #是否允許驗證非法證書建立連接
allowInvalidHostnames: false #如果設(shè)置為true,將禁用證書中的主機名,如果證書主機名不匹配也允許建立連接
disabledProtocols: TLS1_0,TLS1_1,TLS1_2,TLS1_3 #拒絕接受的TLS連接類型
FIPSMode: true #禁用或者啟用FIPS模式,前提是系統(tǒng)有支持FIPS的庫
compression:
compressors: snappy,zstd,zlib #network compression,不需要時設(shè)置為disabled
serviceExecutor: synchronous #執(zhí)行客戶端請求的模式:synchronous或者adaptive
security: #是否開啟用戶驗證
keyFile: "/usr/local/etc/keyfile" #集群之間相互驗證的key
clusterAuthMode: keyFile #集群的認證的模式:keyFile, sendKeyFile, sendX509, x509
authorization: enabled #用戶對數(shù)據(jù)庫的訪問權(quán)限認證: enabled, disabled
transitionToAuth: false #是否允許實例接受和創(chuàng)建認證或非認證的連接
javascriptEnabled: true #啟用或者禁用服務(wù)側(cè)端的JavaScript代碼執(zhí)行
redactClientLogData: false #阻止mongo將潛在的敏感數(shù)據(jù)寫進log
clusterIpSourceWhitelist: #白名單,不對白名單內(nèi)的IP做認證
- 192.0.2.0/24
- 127.0.0.1
- ::1
sasl:
hostName: #SASL域名
serviceName: #SASL服務(wù)名
saslauthdSocketPath: #SASL socket UNIX domain
enableEncryption: false #當engine為WiredTiger時,開啟加密。只對企業(yè)版可用
encryptionCipherMode: AES256-CBC #加密模式:AES256-CBC, AES256-GCM
encryptionKeyFile: #本地密鑰文件,只當設(shè)置為進程管理密鑰時有效,如果數(shù)據(jù)已經(jīng)被KMIP加密了,會報錯
kmip: #企業(yè)版功能
keyIdentifier: #KMIP標示,企業(yè)版功能,security.enableEncryption需要設(shè)置為true
rotateMasterKey: false #設(shè)置為true時,旋轉(zhuǎn)master key 并且重新加密internal keystore
serverName: localhost #KMIP服務(wù)連接地址,需要security.enableEncryption設(shè)置為true
port: 5696 #需要提供security.kmip.serverName,并且需要security.enableEncryption設(shè)置為true
clientCertificateFile: #企業(yè)版功能,客戶端證書文件,用于驗證KMIP server
clientCertificatePassword: #企業(yè)版功能,加密clientCertificateFile文件的密鑰
clientCertificateSelector: #企業(yè)版功能,security.kmip.clientCertificateFile和 security.kmip.clientCertificateSelector只需要設(shè)置一個
serverCAFile: #CA證書路徑,用于保證客戶端連接KMIP
ldap:
servers: #LDAP server, 決定用戶對給定數(shù)據(jù)庫有那些操作權(quán)限
bind:
method: simple #使用queryUser和queryPassword連接LDAP時的方法,sample或者sasl
saslMechanisms: DIGEST-MD5 #GSSAPI或者DIGEST-MD5,mongo用來驗證LDAP服務(wù)的機構(gòu),method設(shè)置為sasl時設(shè)置
queryUser: #當連接LDAP或者查詢時的身份標示,如果沒有設(shè)置,mongo將不會試圖監(jiān)聽LDAP服務(wù)
queryPassword: #使用queryUser時的密碼
useOSDefaults: false #當連接LDAP服務(wù)時,允許mongo使用windows登錄憑證
transportSecurity: tls #mongo默認為LDAP創(chuàng)建TLS/SSL安全連接
timeoutMS: 10000 #LDAP響應(yīng)超時,毫秒
userToDNMapping: [
{
match: "(.+)@ENGINEERING.EXAMPLE.COM",
substitution: "cn={0},ou=engineering,dc=example,dc=com"
},
{
match: "(.+)@DBA.EXAMPLE.COM",
ldapQuery: "ou=dba,dc=example,dc=com??one?(user={0})"
}
] #提供給mongo認證LDAP Distinguished Name的用戶列表
authz:
queryTemplate: {USER}?memberOf?base #
validateLDAPServerConfig: true #是否開啟LDAP服務(wù)可用性檢測
setParameter: #使用如下格式設(shè)置mongo的參數(shù)
enableLocalhostAuthBypass: false
ldapUserCacheInvalidationInterval: 30
storage: #存儲設(shè)置
dbPath: "/usr/local/mongodb/db" #db存放位置, 注意windows中的格式為:\data\db
indexBuildRetry: true #下次啟動時是否重新編譯未完成的索引,對使用 in-memory storage engine的mongo實例不可用
journal: #journal設(shè)置
enabled: true #64位系統(tǒng)默認位true,32位系統(tǒng)默認位false,啟用或禁用journal保證數(shù)據(jù)文件可用和可恢復(fù)
commitIntervalMs: 100 #journal操作之間的最大時間間隔(1-500), 毫秒
directoryPerDB: false # 設(shè)置為true時,mongo會在dbpath下為每個數(shù)據(jù)庫設(shè)置單獨的存放目錄
syncPeriodSecs: 60 #mongo同步數(shù)據(jù)到文件時的時間間隔,不要在生產(chǎn)環(huán)境中設(shè)置此值
engine: wiredTiger #wiredTiger, inMemory. 存儲引擎設(shè)置,默認wiredTiger
wiredTiger:
engineConfig:
cacheSizeGB: 2 #給存儲引擎配置的內(nèi)存數(shù)量,單位GB
journalCompressor: snappy #壓縮WiredTiger journal數(shù)據(jù)的類型:none, snappy, zlib, zstd
directoryForIndexes: false #設(shè)置為true時,mongo在data目錄下使用單獨的子目錄存放索引和集合
maxCacheOverflowFileSizeGB: 0 #為“l(fā)ookaside (or cache overflow) table”設(shè)置最大值,設(shè)置值>=0.1, 可在運行過程中設(shè)置。
collectionConfig:
blockCompressor: none #壓縮集合數(shù)據(jù)的默認壓縮類型:none, snappy, zlib, zstd
indexConfig:
prefixCompression: true #啟用或者禁用prefixCompression,通過一次存放相同的索引前綴來減少內(nèi)存或者硬盤消耗
inMemory:
engineConfig:
inMemorySizeGB: 2 #in-memory存儲引擎數(shù)據(jù)可分配的最大內(nèi)存,包括索引,也包括操作日志(前提是如果mongo是replica set,或者replica set的一部分或者集群元數(shù)據(jù)時)
operationProfiling: #慢查詢配置
mode: off #Database Profiler收集數(shù)據(jù)庫指令的詳細信息,可選值: off(關(guān)閉,不收集任何數(shù)據(jù)), slowOp(收集耗時超過slowms的操作), all(收集所有),
slowOpThresholdMs: 100 #運行時間超多此值的操作被視為slow,單位毫秒
slowOpSampleRate: 1.0 #0-1.0, 應(yīng)該被profiled或者logged的慢操作部分
replication: #副本相關(guān)配置
oplogSizeMB: #響應(yīng)操作日志的最大值,單位MB
replSetName: #mongo所屬的replica set的名字,replica set中所有hosts應(yīng)該有相同的set名字,如果你的應(yīng)用連接超多1個replica set,每個set應(yīng)該有唯一的名字
enableMajorityReadConcern: true #防止PSA部署架構(gòu)停止運轉(zhuǎn)帶給存儲緩存的壓力,設(shè)置為false
localPingThresholdMs: 15 #此項只針對mongos。 ping時間,毫秒。mongos用來查找第二個處理來自客戶端讀取操作的replica set成員
sharding: #分片集配置
clusterRole: configsvr #mongo實例在集群中的角色,可選值: configsvr(作為配置服務(wù)啟動實例,默認在27019端口啟動), shardsvr(作為shard啟動,默認以27018端口啟動)
archiveMovedChunks: false #
configDB: <configReplSetName>/cfg1.example.net:27019 #此項只針對mongos。指定config server的replica set名字,hostname和端口
auditLog: #審計日志配置
destination: syslog #syslog(以JSON格式輸出審核事件到syslog, Windows系統(tǒng)不可用) console(以JSON格式輸出審核事件到標準輸出) file(以auditLog.format格式輸出到auditLog.path指定的目錄)
format: JSON #auditLog輸出格式,對應(yīng)destination設(shè)置為file的話,此項生效,另一個可選值是BSON
path: "/var/log/audit.log" #auditLog存放路徑,對應(yīng)destination設(shè)置為file的話,此項生效
filter: {atype: "$eq"} #過濾audit system記錄的操作類型
snmp: #SNMP配置
disabled: false #是否禁止SNMP訪問mongo
subagent: true #如果設(shè)置為true且snmp.disabled設(shè)置為false, 則SNMP作為subagent運行,如果snmp.disabled設(shè)置為true,則此項無效
master: false #如果設(shè)置為true且snmp.disabled設(shè)置為false, 則SNMP作為master運行,如果snmp.disabled設(shè)置為true,則此項無效
開啟用戶驗證前需要先建立root用戶
>use admin;
>db.createUser({
user:"root",
pwd:"****",
roles:[
{
role:"root",
db:"admin"
}
]
})
簡單的配置模板:
systemLog:
destination: file
path: "/usr/local/var/log/mongod.log"
logAppend: true
processManagement:
fork: false
pidFilePath: "/usr/local/mongodb/mongod.pid"
net:
bindIp: 127.0.0.1
port: 27017
maxIncomingConnections: 65536
storage:
dbPath: "/usr/local/mongodb/db"
journal:
enabled: true
engine: wiredTiger
wiredTiger:
engineConfig:
cacheSizeGB: 2
security:
authorization: enabled
Thanks!