温馨提示×

CentOS下MongoDB配置技巧有哪些

小樊
36
2026-01-04 01:43:11
栏目: 云计算

CentOS 下 MongoDB 配置技巧

一 基础安装与仓库配置

  • 使用官方 YUM 仓库安装,创建文件 /etc/yum.repos.d/mongodb-org-<版本>.repo,示例:
    • [mongodb-org-6.0]
    • name=MongoDB Repository
    • baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/6.0/x86_64/
    • gpgcheck=1
    • enabled=1
    • gpgkey=https://www.mongodb.org/static/pgp/server-6.0.asc
  • 安装套件:sudo yum install -y mongodb-org
  • 启动与自启:sudo systemctl start mongod && sudo systemctl enable mongod
  • 配置文件默认路径:/etc/mongod.conf(YAML 格式)

二 关键配置项与推荐值

  • 核心配置片段(示例):
    • systemLog:
      • destination: file
      • logAppend: true
      • path: /var/log/mongodb/mongod.log
    • processManagement:
      • fork: true
      • pidFilePath: /var/run/mongodb/mongod.pid
    • net:
      • bindIp: 127.0.0.1(仅本机)或 0.0.0.0(允许远程,务必配合防火墙/安全组)
      • port: 27017
    • storage:
      • dbPath: /var/lib/mongo
      • journal:
        • enabled: true
    • security:
      • authorization: enabled(开启 RBAC)
  • 目录与权限:数据目录 /var/lib/mongo、日志目录 /var/log/mongodb 归属 mongodb:mongodb
  • WiredTiger 缓存:通过 storage.wiredTiger.engineConfig.cacheSizeGB 控制,建议设置为能容纳应用工作集(索引+热点数据),避免过大挤占系统内存

三 安全加固要点

  • 启用认证:在配置中设置 security.authorization: enabled,重启后创建管理员用户(如 userAdminAnyDatabase),再用 mongo -u -p 验证登录
  • 网络访问控制:生产环境优先将 bindIp 设为服务器内网/管理网 IP,必要时再开放公网并配合 firewall-cmd 精确放行 27017/tcp
  • 禁用不安全特性:如 javascriptEnabled: false(降低脚本注入风险)
  • 可选加密:启用 TLS/SSL 加密传输(在 net.tls 下配置证书与密钥),提升公网/跨机房安全性
  • SELinux:若与 MongoDB 产生权限冲突,可将其设为 permissive 或按需在策略中放行(不建议直接 disabled,除非已评估风险)

四 性能与稳定性优化

  • 资源与架构:确保工作集适配内存WiredTiger 缓存覆盖热点数据;多核 CPU 能更好发挥并发;尽量单机单实例,避免资源争用
  • 存储与 I/O:优先 SSD/NVMe;必要时使用 RAID 提升吞吐与可靠性;大流量/海量数据考虑 副本集/分片集群 扩展
  • 连接与压缩:合理控制连接数;在支持的版本/驱动上启用 Snappy 等网络压缩降低带宽占用
  • 监控与调优:使用 db.getProfilingLevel()/profiling 定位慢查询;结合索引优化(如复合索引、覆盖索引)与查询写法改进

五 运维与故障排查

  • 启停与自启:使用 systemctl start|stop|restart|status mongod;变更配置后务必重启并校验状态
  • 日志与端口:排查连接失败先看 /var/log/mongodb/mongod.log 是否出现 “waiting for connections on port 27017”
  • 防火墙与云安全组:开放 27017/tcp 且仅放行业务来源;变更后执行 firewall-cmd --reload
  • 时间与复制:部署 NTP 保证节点间时间一致,避免复制/认证异常
  • 常见排错路径:配置文件语法(YAML 缩进)、目录权限(mongodb:mongodb)、SELinux/防火墙策略、端口占用、认证与角色是否正确授予

0