温馨提示×

centos mongodb最佳实践分享

小樊
37
2025-12-25 07:29:20
栏目: 云计算

CentOS 上部署与运维 MongoDB 的最佳实践

一 环境与版本选择

  • 选择与系统匹配的版本:在 CentOS 7 上优先 MongoDB 4.4.x(兼容性成熟);在 CentOS 8/9 上使用 6.0+ 或更高稳定版,并按需单独安装 mongodb-database-tools
  • 使用官方 YUM 源安装,便于获取安全更新与依赖一致性。
  • 建议采用 XFS/EXT4 文件系统,挂载时启用 noatime 降低元数据写放大;生产强烈推荐 SSD/NVMe 与充足的 IOPS。

二 安装与基础配置

  • 添加官方仓库(以 6.0 为例):创建 /etc/yum.repos.d/mongodb-org-6.0.repo,内容包含 name、baseurl、gpgcheck、enabled、gpgkey;执行安装:sudo yum install -y mongodb-org
  • 目录与权限:数据目录(如 /var/lib/mongo 或自定义 /data/db)、日志目录(如 /var/log/mongodb)需存在且属主为 mongod:mongod
  • 核心配置要点(/etc/mongod.conf):
    • systemLog:destination 为 file、path、logAppend 为 true;
    • storage:dbPath、journal.enabled 为 true;
    • net:bindIp 建议绑定内网地址(如内网 IP 或 127.0.0.1),port 27017
    • processManagement:fork 为 true(配合 systemd 常用),pidFilePath 合理设置;
    • 安全:security.authorization 设为 enabled
  • 启动与自启:sudo systemctl start mongod && sudo systemctl enable mongod

三 安全加固

  • 启用访问控制:设置 security.authorization: enabled,创建 管理员用户应用专用最小权限用户,避免使用 localhost 例外
  • 副本集安全:使用 keyFile(如 /usr/local/mongodb/mongodb-keyfile)统一认证,权限 600,并在配置中指定 replication.replSetName
  • 网络安全:仅开放必要来源 IP 与端口;在 firewalld 放行 27017/tcp;云环境同步配置 安全组 规则。
  • 服务与系统:以 mongod 用户运行(官方 RPM 约定),禁用不必要的网络/功能,定期更新补丁。

四 高可用与扩展

  • 副本集优先:生产环境至少 3 个数据承载节点(1 主 2 从),保障 高可用故障自动切换;必要时可部署 仲裁节点(Arbiter)用于投票。
  • 分片策略:当数据/吞吐超过单机能力时,按 分片键 进行 水平拆分,结合 mongos 路由与 配置服务器 实现线性扩展。
  • 连接与驱动:应用使用 副本集连接字符串(包含多个节点与 replicaSet 名称),驱动自动发现主从与故障切换。

五 性能与监控

  • 内存与缓存:WiredTiger 内部缓存通过 storage.wiredTiger.engineConfig.cacheSizeGB 控制,通常设为“物理内存的 50%–60%”(留出空间给操作系统与文件系统缓存、连接等);确保 工作集(热点数据+索引)尽量驻留内存。
  • 存储与文件系统:优先 SSD,挂载使用 noatime;合理设置 RAID(如 RAID10)提升吞吐与可靠性。
  • 操作系统优化:
    • 提升文件描述符与进程数限制(如 ulimit -n 64000ulimit -u 64000);
    • 禁用 透明大页(THP) 以减少内存管理抖动;
    • 选择合适的 I/O 调度器(SSD 常用 none/noop 或 mq-deadline);
    • 配置 日志轮转,避免日志无限增长。
  • 索引与查询:
    • 使用 explain("executionStats") 分析执行计划,建立 复合索引 并遵循最左前缀;
    • 设计 覆盖索引 减少回表;定期清理 冗余/低效索引
    • 优化聚合与排序,避免全表扫描与内存超限。
  • 监控与调优:开启 慢查询日志(profile 或日志阈值),持续观察 连接数、队列、页面错误、repl/oplog 延迟 等关键指标,结合容量规划做滚动优化。

0