0
点赞
收藏
分享

微信扫一扫

Mongodb 细数 4.4 后改变的配置信息

Mongodb  细数 4.4 后改变的配置信息_mongodb

MONGODB 不少企业都在用,版本大多几种在3.2 3.6 4.0 , 今天在安装MONGODB 5.0 的时候,突发想把MONGODB 4.4 - 5.0 配置文件的变化捋一捋。凡是从4.4改变的配置信息会加粗加深


systemLog 中在4.4 --  5.0 变化不大


verbosity是描述日志记录的详细度,如果不做设置,默认为0如果想得到更多debug的信息可以通过将值调整 1 -5 进行。同时可以通过配置中的component来对感兴趣的模块的日志信息进行详细记录,而不用在总的详细度中进行设置,尽量减少不必要的日志,MONGODB的日志如果详细度调整的过高,磁盘空间会快速的被占用,一秒出现10几条日志不是玩笑。


quiet 可以在测试的环境中使用,尤其是一些没有人管理的MONGODB的测试环境,日志可以最小化。


traceALLEXceptions 是为获得更多的信息,为官方获得更多debug日志来追踪问题,如果不是碰到特殊的问题,不建议打开。


logRotate  则对日志在服务重启后的处理方式,是打开原来的继续,还是开一个新的,我们一般都选择rename的方式,获得新的日志。


在timeStampFormat 中在MONGODB4.4 包含了ctime的方式,在MONGODB 4.4 被取消了,值支持iso8601-utc  iso8601-local


systemLog:
   verbosity: 0
   quiet: false
   traceAllExceptions: false
   syslogFacility: user
   path: /mongodata/error
   logAppend: false
   logRotate: rename
   destination: file
   timeStampFormat: iso8601-local

   component:
      accessControl:
         verbosity: <int>
      command:
         verbosity: <int>


component 中可以选择的信息包含 accessControl, command, control ,ftdc, geo, index , network , query, replication,  等,可以对觉得容易出现问题的模块进行更细致的日志记录。而这些细致的调节的功能是从 MONGODB 4.2开始加入的,并且这些选项中的信息下面有更多的信息可以被选择,如 replicaiton.election, replication.rollback  ,replication.initialSync .   详细的信息,mongodb doc  configuration file 中都有详细的介绍。


processManagement:
   fork: true
   pidFilePath: /mongodata/pid
 

processManagement 中的fork 是针对启动的mongodb的工作进程是在使用什么样的工作模式,一般选择 true 来将mongodb的启动进程在后台运行。

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>
      logVersions: <string>
   compression:
      compressors: <string>


net:
   port: 27027
   bindIp: 192.168.198.50
   bindIpAll: false
   maxIncomingConnections: 1000
   wireObjectCheck: true
   unixDomainSocket:
      enabled: true
      pathPrefix: /tmp
      filePermissions: 0700
    compression:
      compressors: zlib


net 主要是设置MONGODB 对方访问接口与安全的部分

port 是设置MONGODB 对外的接口 默认  27017 27018 27019  是mongodb的端口(包含sharding 部分设置), 所以在设置是可以避免这些端口的设置避免一些简单的探测和侵入。


bindIp 可以设置多个IP 通过数组的方式和逗号分隔,bindIpAll 和 bingIp是二选一,如果将bindIpAll 设置为true 说明所有的连接都可以连接到MONGODB 中。


maxIncomingConnections  mongodb也需要设置连接中最大支持的连接数,设置这个值需要和应用谈好,设置的值应比连接池的总数要高,需要预留给管理者, 默认的值为 65536


compression.compressors 中的配置如果是4.0以下包含4.0 以下版本的MONGODB 网络通信压缩使用应该是 snappy 如果是4.2 以上的版本可以选择 zstd ,zlib 等压缩方式,另如果两方设置的压缩方式不一致,则数据传输不压缩。


security:
   keyFile: /mongodb/keyfile/security
   clusterAuthMode: keyFile
   authorization: enabled


一般安全针对复制集,其中需要各个复制集都有通过秘钥文件建立安全的关系并且需要通过用户密码的方式进行登录


Storage 是配置中关于存储和存储引擎配置的地方

dbPatch配置数据库存储的路径,journal 日志也是MONGODB保证在主机crash时信息不丢失的一个保证,enabled 必须打开,commitIntervalMs默认值100 , 调整值在1-500ms ,值越大越有利于磁盘性能,值越小越有利于数据库crash后的数据丢失损失最小化。

directoryPerDB 控制每个MONGODB中的数据库在LINUX文件系统中的存储是否通过文件夹进行分化存储,否则就会用单个文件存储,这里默认为单个文件,如果后面想反悔,通过分割文件夹的方式来存储,就必须导出数据,修改配置,在导入数据,此时建议还是使用true


storage:
   dbPath: /mongodata/data
   journal:
      enabled: true
      commitIntervalMs: 200
   directoryPerDB: true
   wiredTiger:
      engineConfig:
         cacheSizeGB: 2G
         journalCompressor: zlib
         directoryForIndexes: true
      collectionConfig:
         blockCompressor: zlib
      indexConfig:
         prefixCompression: true
     oplogMinRetentionHours: 1.5


另有一些配置不建议设置如 storage.syncPeriodSecs 保持默认值即可。


从MONGODB 4.2后 storage.engine 不能在使用 MMAPV1的数据库引擎,wirtedTiger是MONGODB默认的引擎。


从MONGODB 4.4 后添加了storage.oplogMinRetentionHours参数,这个参数对于oplog保留的时间做了设置,举例如设置为1.5 则意味此时产生的OPLOG 将保留1.5小时。注意这里是最小保留时间。另配置可以在MONGODB 工作中进行动态的设置,通过replSetResizeOplog.


cacheSizeGB的设置为所在主机内存的50%左右,通常这个主机上只工作MONGODB一个INSTANCE 如果工作多个,则需要另做打算。基于MONGODB 原理,建议不要对MONGODB的内存太吝啬。这里MONGODB 与 POSTGRESQL 在内存的管理和使用上有雷同点,就是都是自己的CACHE + LINUX 文件系统的cache的使用方式。


directoryForIndexes 默认是false,这里选择true 目的为将数据和索引分开存储


maxCacheOverflowFileSizeGB: <number> 设置在MONGODB4.4取消,即使设置也无效。这个设置只在4.0 (4.012)4.2(4.2.1)版本上有效。


operationProfiling:
   mode: slowOp
   slowOpThresholdMs: 100
   slowOpSampleRate: 1.0
   filter: '{ op: "query", millis: { $gt: 2000 } }'


operationProfiling 是针对Mongodb慢查询或操作过滤设置的, slowOpThresholdMs 和  slowOpSampleRate  两个选项和 filter 选项是互斥的,如果设置了filter 则上面的两个选项则失效。


replication:
   oplogSizeMB: 5000
   replSetName: repl
   enableMajorityReadConcern: true


Replication 中的 enableMajorityReadConcern 在5.0做出了改变,默认为TRUE ,这点十分重要,如果你在5.0还继续使用PSA模式,也就是primary  secondary  arbiter 的方式就如果其中的secondary Down机会引起性能问题,具体参考https://docs.mongodb.com/manual/reference/configuration-options/#mongodb-setting-replication.enableMajorityReadConcern


大致在总结从4.4后改变的配置

1 systemLog.timeStampFormat

2 net.tls.clusterCertificateSelector

3 net.tls.clusterFile

4 net.tls.CRLFile

5 net.ssl.CRLFile

6 security.javascriptEnabled

7 storage.indexBuildRetry (取消)

8 storage.oplogMinRetentionHours

9 maxCacheOverflowFileSizeGB (取消)

10 operationProfiling.filter 

11 replication.enableMajorityReadConcern  5.0

12 storage.wiredTiger.engineConfig.zstdCompressionLevel  5.0


通过大致的分析和统计,4.4变化至少10项,5.0版本中replication的选项要注意使用的复制集的方式,一主两从应该是主流。


以下配置可以在MONGODB 5.05工作


Mongodb  细数 4.4 后改变的配置信息_数据库_02


Mongodb  细数 4.4 后改变的配置信息_复制集_03

Mongodb  细数 4.4 后改变的配置信息_mongodb_04





举报

相关推荐

0 条评论