- 首页 >
- 问答 >
-
云计算 >
- CentOS下MongoDB配置技巧有哪些
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:
- 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/防火墙策略、端口占用、认证与角色是否正确授予