cxl
Published on 2025-05-08 / 13 Visits
0
0

MongoDB之配置

本文主要记录在使用配置文件时的一些可选配置:

一、核心配置选项

1. 系统日志(systemLog)

  • 日志输出目标

    • destination:支持 file(需指定 path)、syslog(系统日志)或默认 stdout

    • path:日志文件路径(如 /var/log/mongodb/mongod.log)。

    • logAppendtrue 表示追加日志,false 表示覆盖(默认)。

  • 日志格式与级别

    • verbosity:日志详细级别(0-5 级,0 为默认信息级别,1-5 为调试级别)。

    • timeStampFormat:时间戳格式,支持 iso8601-utc(UTC 时间)或 iso8601-local(本地时间)。

  • 组件日志
    可针对 accessControlcommandreplication 等组件单独设置日志级别,如:

    systemLog:
      component:
        accessControl:
          verbosity: 2

2. 进程管理(processManagement)

  • 守护进程模式

    • fork: true:启用后台运行(Windows 不支持)。

    • pidFilePath:指定 PID 文件路径(通常与 fork 配合使用)。

  • 时区配置
    timeZoneInfo:指定时区数据库路径(默认使用内置时区库)。

3. 网络配置(net)

  • 端口与绑定地址

    • port:默认 27017(分片配置服务器为 27019,分片节点为 27018)。

    • bindIp:绑定 IP 地址(如 127.0.0.1),支持多地址逗号分隔;bindIpAll: true 表示绑定所有 IP。

  • TLS/SSL 配置

    net:
      tls:
        mode: requireTLS          # 强制使用 TLS
        certificateKeyFile: /path/to/cert.pem  # 证书文件路径
        CAFile: /path/to/ca.pem    # 根证书路径
        allowInvalidCertificates: false        # 是否允许无效证书
  • 压缩配置
    compression.compressors:指定网络传输压缩算法(snappy/zlib/zstd,默认 snappy,zstd,zlib)。

4. 存储配置(storage)

  • 数据路径
    dbPath:数据存储目录(默认 /data/db 或系统特定路径)。

  • 存储引擎

    • engine:默认 wiredTiger,可选 inMemory(仅 Enterprise 版支持内存存储)。

    • WiredTiger 配置

      storage:
        wiredTiger:
          engineConfig:
            cacheSizeGB: 8        # 缓存大小(建议为物理内存的 50% - 1GB)
            journalCompressor: snappy  # 日志压缩算法
          collectionConfig:
            blockCompressor: zstd     # 数据块压缩算法

    展开过程

  • Oplog 配置
    replication.oplogSizeMB:指定 oplog 大小(MB),默认占磁盘空间的 5%(64 位系统)。

5. 安全配置(security)

  • 访问控制
    authorization: enabled:启用基于角色的访问控制(RBAC)。

  • 内部身份验证

    • keyFile:副本集 / 分片集群成员共享的密钥文件路径。

    • clusterAuthMode:身份验证模式(keyFile/x509 等)。

  • 外部身份验证
    支持 LDAP、Kerberos、KMIP 等,如 LDAP 配置:

    security:
      ldap:
        servers: "ldap.example.com:389"
        bind:
          method: sasl
          saslMechanisms: GSSAPI

6. 复制与分片(replication/sharding)

  • 副本集配置

    replication:
      replSetName: "rs0"        # 副本集名称
      enableMajorityReadConcern: true  # 启用多数读关注
  • 分片配置

    sharding:
      clusterRole: shardsvr     # 节点角色(shardsvr/configsvr)
      configDB: "configReplSet/conf1:27019,conf2:27019"  # 配置服务器地址

7. 审计日志(auditLog,仅 Enterprise/Atlas)

auditLog:
  destination: file         # 输出目标(file/syslog/console)
  path: /var/log/mongodb/audit.log  # 日志路径
  format: JSON              # 日志格式(JSON/BSON)
  filter: '{"operation": "insert", "ns": "admin.*"}'  # 过滤规则

二、其他配置

1. 操作分析(operationProfiling)

operationProfiling:
  mode: slowOp              # 分析模式(off/slowOp/all)
  slowOpThresholdMs: 500     # 慢操作阈值(毫秒)
  slowOpSampleRate: 1.0      # 慢操作采样率(0-1)

2. Windows 服务配置

processManagement:
  windowsService:
    serviceName: "MongoDB"    # 服务名称
    serviceUser: "domain\user" # 运行服务的用户
    servicePassword: "password"

3. 已弃用配置

  • MMAPv1 存储引擎相关配置(如 storage.mmapv1.*)已移除,需迁移至 WiredTiger。

  • LDAP 身份验证在 MongoDB 8.0 中已弃用,建议改用 X.509 或 SASL。

三、配置最佳实践

  1. 生产环境建议

    • 启用 TLS/SSL(net.tls.mode: requireTLS)和访问控制(security.authorization: enabled)。

    • 限制绑定地址(bindIp),避免公开暴露服务。

    • 使用副本集(Replica Sets)实现高可用,分片(Sharding)处理海量数据。

  2. 性能优化

    • 合理设置 wiredTiger.engineConfig.cacheSizeGB(建议不超过物理内存的 50%)。

    • 启用压缩(storage.wiredTiger.collectionConfig.blockCompressor)减少存储占用。

  3. 日志与监控

    • 配置审计日志(auditLog)记录敏感操作。

    • 使用慢查询分析(operationProfiling)定位性能瓶颈


Comment