美文网首页
mongo配置文件

mongo配置文件

作者: pyihe | 来源:发表于2020-06-16 16:27 被阅读0次

    mongodb yaml格式配置文件模板:
    Go to github
    各个配置项的详细介绍请跳转MongoDB官网

    systemLog: #日志设置
        verbosity: 1 #默认值0,日志输出详细度,1-5日志越来越细
        quiet: false #静默模式,限制输出,生产环境中不建议设置为true
        traceAllExceptions: true #打印详细的调试信息
        syslogFacility: "root" #记录日志的设备级别,如果设置了此项,必须将systemLog.destination设置为syslog
        path: "/usr/local/var/log/mongod.log" #mongodb日志的存放目录
        logAppend: true  #为true,则mongodb每次重启时日志都会以追加的形式记录到文件里,否则则会备份既有的文件,并且重新创建新的日志文件
        logRotate: "reopen" #rename:重命名日志文件 reopen:按照Linux/Unix日志反转行为来关闭或者重新打开日志文件,设置为reopen时必须同时设置systemLog.logAppend为true
        destination: file #日志记录,file或者syslog,如果指定为file,需要同时指定path,如果没有设置此项,则所有日志都将被输出到标准输出,为了保证精确的时间,生产环境建议配置为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文件存放位置,注意目录权限
        timeZoneInfo: "/usr/share/zoneinfo" #时区数据库,如果没配置,则mongo会使用内置的时区数据库,linux和macOs默认设置为/usr/share/zoneinfo
        windowsService: #windowns系统上的相关配置
            serviceName: MongoDB #作为windows服务运行是的服务名
            displayName: MongoDB #在Windows系统中Services administrative application展示的名字
            description: 
            serviceUser:
            servicePassword:
    cloud: #4.0版本新功能
        monitoring:
            free:
                state: runtime #runtime: 运行中可以启用或者停用免费监控; on: 启动时开启免费监控,运行时无法停用; off: 启动时停用免费监控,运行时无法启用
                tags: ""
    net: #网络配置
        port: 27017 #端口  
        bindIp: 127.0.0.1 #从v3.6开始默认值为localhost,如果需要添加多个,使用,分割,支持IPV6,需要设置ipv6为true
        bindIpAll: false #v3.6之后支持,为true时支持所有的IPV4,如果设置ipv6为true,则也支持所有的ipv6,注意:暴露在公网时,需要防止未授权的访问
        maxIncomingConnections: 65536 #同时接受的最大连接数,不要将此项的值设置得太低,否则会遇到错误在正常操作时
        wireObjectCheck: false #如果为true,会阻止客户端插入畸形或者无效的BSON数据到数据库
        ipv6: true #支持IPV6,默认不支持
        unixDomainSocket:
            enabled: false #默认值true,仅适用于类unix系统,启用或停用Unix域套接字通信
            pathPrefix: "/tmp" #默认值/tmp, 如果没设置,则会创建以/tmp为前缀的socket
            filePermissions: 0700 #socket file文件的权限
        tls: 
          mode: disabled #disabled: 不使用TLS  allowTLS: 服务之间不使用TLS, 客户端连接同时支持TLS和非TLS  preferTLS: 服务之间使用TLS,客户端都支持  requireTLS: 只接受TLS加密的连接
          certificateKeyFile: "/usr/local/etc/test.pem" #同时包含证书和密钥的.pem文件,如果TLS开启,Linux系统必须指定certificateKeyFile,windows和macOS系统必须指定certificateKeyFile和certificateSelector中的一个
          certificateKeyFilePassword: "test" #用于解密证书文件的密码
          certificateSelector: subject="证书名" #从系统证书目录中选取匹配的证书
          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 #如果设置为true,将禁用证书中的主机名,如果证书主机名不匹配也允许建立连接
          disabledProtocols: TLS1_0,TLS1_1,TLS1_2,TLS1_3 #拒绝接受的TLS连接类型
          FIPSMode: true #禁用或者启用FIPS模式,前提是系统有支持FIPS的库
        compression: 
            compressors: snappy,zstd,zlib #network compression,不需要时设置为disabled
        serviceExecutor: synchronous #执行客户端请求的模式:synchronous或者adaptive
    security: #是否开启用户验证
        keyFile: "/usr/local/etc/keyfile" #集群之间相互验证的key
        clusterAuthMode: keyFile #集群的认证的模式:keyFile, sendKeyFile, sendX509, x509
        authorization: enabled #用户对数据库的访问权限认证: enabled, disabled
        transitionToAuth: false #是否允许实例接受和创建认证或非认证的连接
        javascriptEnabled: true #启用或者禁用服务侧端的JavaScript代码执行
        redactClientLogData: false #阻止mongo将潜在的敏感数据写进log
        clusterIpSourceWhitelist:  #白名单,不对白名单内的IP做认证
            - 192.0.2.0/24
            - 127.0.0.1
            - ::1
        sasl:
            hostName: #SASL域名
            serviceName: #SASL服务名
            saslauthdSocketPath:  #SASL socket UNIX domain
        enableEncryption: false #当engine为WiredTiger时,开启加密。只对企业版可用
        encryptionCipherMode: AES256-CBC #加密模式:AES256-CBC, AES256-GCM
        encryptionKeyFile: #本地密钥文件,只当设置为进程管理密钥时有效,如果数据已经被KMIP加密了,会报错
        kmip: #企业版功能
            keyIdentifier: #KMIP标示,企业版功能,security.enableEncryption需要设置为true
            rotateMasterKey: false #设置为true时,旋转master key 并且重新加密internal keystore
            serverName: localhost #KMIP服务连接地址,需要security.enableEncryption设置为true
            port: 5696 #需要提供security.kmip.serverName,并且需要security.enableEncryption设置为true
            clientCertificateFile: #企业版功能,客户端证书文件,用于验证KMIP server
            clientCertificatePassword: #企业版功能,加密clientCertificateFile文件的密钥
            clientCertificateSelector:  #企业版功能,security.kmip.clientCertificateFile和 security.kmip.clientCertificateSelector只需要设置一个
            serverCAFile: #CA证书路径,用于保证客户端连接KMIP
        ldap:
            servers: #LDAP server, 决定用户对给定数据库有那些操作权限
            bind:
                method: simple #使用queryUser和queryPassword连接LDAP时的方法,sample或者sasl
                saslMechanisms: DIGEST-MD5 #GSSAPI或者DIGEST-MD5,mongo用来验证LDAP服务的机构,method设置为sasl时设置
                queryUser:  #当连接LDAP或者查询时的身份标示,如果没有设置,mongo将不会试图监听LDAP服务
                queryPassword: #使用queryUser时的密码
                useOSDefaults: false #当连接LDAP服务时,允许mongo使用windows登录凭证
            transportSecurity: tls #mongo默认为LDAP创建TLS/SSL安全连接
            timeoutMS: 10000 #LDAP响应超时,毫秒
            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服务可用性检测
    setParameter: #使用如下格式设置mongo的参数
        enableLocalhostAuthBypass: false
        ldapUserCacheInvalidationInterval: 30
    storage: #存储设置
        dbPath: "/usr/local/mongodb/db" #db存放位置, 注意windows中的格式为:\data\db
        indexBuildRetry: true #下次启动时是否重新编译未完成的索引,对使用 in-memory storage engine的mongo实例不可用
        journal:   #journal设置
            enabled: true #64位系统默认位true,32位系统默认位false,启用或禁用journal保证数据文件可用和可恢复
            commitIntervalMs: 100  #journal操作之间的最大时间间隔(1-500), 毫秒
        directoryPerDB: false # 设置为true时,mongo会在dbpath下为每个数据库设置单独的存放目录
        syncPeriodSecs: 60 #mongo同步数据到文件时的时间间隔,不要在生产环境中设置此值
        engine: wiredTiger #wiredTiger, inMemory. 存储引擎设置,默认wiredTiger
        wiredTiger:
            engineConfig:
                cacheSizeGB: 2 #给存储引擎配置的内存数量,单位GB
                journalCompressor: snappy #压缩WiredTiger journal数据的类型:none, snappy, zlib, zstd
                directoryForIndexes: false #设置为true时,mongo在data目录下使用单独的子目录存放索引和集合
                maxCacheOverflowFileSizeGB: 0 #为“lookaside (or cache overflow) table”设置最大值,设置值>=0.1, 可在运行过程中设置。
            collectionConfig:
                blockCompressor: none #压缩集合数据的默认压缩类型:none, snappy, zlib, zstd
            indexConfig:
                prefixCompression: true #启用或者禁用prefixCompression,通过一次存放相同的索引前缀来减少内存或者硬盘消耗
        inMemory:
            engineConfig:
                inMemorySizeGB: 2 #in-memory存储引擎数据可分配的最大内存,包括索引,也包括操作日志(前提是如果mongo是replica set,或者replica set的一部分或者集群元数据时)
    operationProfiling: #慢查询配置
        mode: off #Database Profiler收集数据库指令的详细信息,可选值: off(关闭,不收集任何数据), slowOp(收集耗时超过slowms的操作), all(收集所有), 
        slowOpThresholdMs: 100 #运行时间超多此值的操作被视为slow,单位毫秒
        slowOpSampleRate: 1.0 #0-1.0, 应该被profiled或者logged的慢操作部分
    replication: #副本相关配置
        oplogSizeMB: #响应操作日志的最大值,单位MB
        replSetName: #mongo所属的replica set的名字,replica set中所有hosts应该有相同的set名字,如果你的应用连接超多1个replica set,每个set应该有唯一的名字
        enableMajorityReadConcern: true #防止PSA部署架构停止运转带给存储缓存的压力,设置为false
        localPingThresholdMs: 15 #此项只针对mongos。 ping时间,毫秒。mongos用来查找第二个处理来自客户端读取操作的replica set成员
    sharding: #分片集配置
        clusterRole: configsvr #mongo实例在集群中的角色,可选值: configsvr(作为配置服务启动实例,默认在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系统不可用) console(以JSON格式输出审核事件到标准输出) file(以auditLog.format格式输出到auditLog.path指定的目录) 
        format: JSON #auditLog输出格式,对应destination设置为file的话,此项生效,另一个可选值是BSON
        path: "/var/log/audit.log" #auditLog存放路径,对应destination设置为file的话,此项生效
        filter: {atype: "$eq"} #过滤audit system记录的操作类型
    snmp: #SNMP配置
        disabled: false #是否禁止SNMP访问mongo
        subagent: true #如果设置为true且snmp.disabled设置为false, 则SNMP作为subagent运行,如果snmp.disabled设置为true,则此项无效 
        master: false #如果设置为true且snmp.disabled设置为false, 则SNMP作为master运行,如果snmp.disabled设置为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!

    相关文章

      网友评论

          本文标题:mongo配置文件

          本文链接:https://www.haomeiwen.com/subject/sbjrxktx.html