mongo配置文件

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!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容