MongoDB 单机部署全攻略:从安装到优化的实践指南

MongoDB 单机部署全攻略:从安装到优化的实践指南

一、引言:单机部署的适用场景与价值

MongoDB作为非关系型数据库的代表,以其灵活的文档模型、水平扩展能力和高性能著称。单机部署适用于开发测试环境、小型应用或对高可用性要求不高的场景,能够以最低成本快速验证业务逻辑。相比集群部署,单机模式无需处理分片、副本集等复杂配置,但需注意数据安全与备份策略。本文将系统讲解MongoDB单机部署的核心步骤,帮助开发者高效完成环境搭建。

二、环境准备:系统与软件要求

1. 操作系统兼容性

MongoDB支持Linux(Ubuntu/CentOS)、Windows和macOS,但生产环境推荐使用Linux(如Ubuntu 20.04 LTS)。Linux系统对资源控制更精细,且社区支持更完善。例如,Ubuntu可通过apt包管理器快速安装依赖库,而Windows需手动配置环境变量。

2. 硬件配置建议

  • 内存:至少4GB(开发环境),生产环境建议16GB+以支持大容量数据操作。
  • 磁盘:SSD优于HDD,尤其是写密集型场景。MongoDB默认将数据存储在/data/db目录,需确保磁盘空间充足。
  • CPU:多核处理器可提升并发查询性能,但单机模式下核心数影响有限。

3. 软件依赖

  • 依赖库:Linux需安装libcurl4openssl等(通过sudo apt install命令)。
  • 版本选择:推荐使用LTS版本(如MongoDB 6.0),避免使用Beta版可能存在的稳定性问题。

三、安装与配置:分步详解

1. 下载与安装

Linux(Ubuntu)示例:

  1. # 导入公钥
  2. wget -qO - https://www.mongodb.org/static/pgp/server-6.0.asc | sudo apt-key add -
  3. # 添加源
  4. echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/6.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list
  5. # 安装
  6. sudo apt update
  7. sudo apt install -y mongodb-org

Windows/macOS:

  • 从官网下载.msi(Windows)或.tgz(macOS)安装包,按向导完成安装。

2. 启动与停止服务

  • Linux
    1. sudo systemctl start mongod # 启动
    2. sudo systemctl status mongod # 检查状态
    3. sudo systemctl stop mongod # 停止
  • Windows:通过服务管理器或命令行net start MongoDB启动。

3. 基础配置

修改/etc/mongod.conf(Linux)或mongod.cfg(Windows)文件:

  1. # 关键配置项
  2. storage:
  3. dbPath: /var/lib/mongodb # 数据存储路径
  4. journal:
  5. enabled: true # 启用日志,保障数据安全
  6. net:
  7. bindIp: 0.0.0.0 # 允许所有IP访问(生产环境需限制)
  8. port: 27017 # 默认端口
  9. security:
  10. authorization: disabled # 开发环境可暂禁用认证

四、基础操作:连接与CRUD

1. 连接数据库

  1. mongosh # 启动MongoDB Shell
  2. # 或指定主机和端口
  3. mongosh --host 127.0.0.1 --port 27017

2. 创建数据库与集合

  1. use mydb; // 创建/切换数据库
  2. db.createCollection("users"); // 创建集合

3. 插入与查询数据

  1. db.users.insertOne({name: "Alice", age: 25}); // 插入单条
  2. db.users.find({age: {$gt: 20}}); // 查询年龄>20的用户

五、性能优化与安全加固

1. 索引优化

  1. // 为name字段创建升序索引
  2. db.users.createIndex({name: 1});
  3. // 查看索引
  4. db.users.getIndexes();

索引可显著提升查询速度,但需权衡写入性能。

2. 内存配置

mongod.conf中调整:

  1. operationProfiling:
  2. mode: slowOp # 记录慢查询(阈值通过slowOpThresholdMs设置)

3. 安全策略

  • 启用认证
    1. security:
    2. authorization: enabled

    创建管理员用户:

    1. use admin;
    2. db.createUser({user: "admin", pwd: "password", roles: ["root"]});
  • 防火墙规则:仅允许可信IP访问27017端口。

六、备份与恢复

1. 逻辑备份(mongodump)

  1. mongodump --host 127.0.0.1 --db mydb --out /backup/

2. 物理备份(文件拷贝)

直接复制dbPath目录下的文件,需确保MongoDB服务已停止。

3. 恢复数据(mongorestore)

  1. mongorestore --host 127.0.0.1 --db mydb /backup/mydb/

七、常见问题与解决方案

  1. 端口冲突:检查27017端口是否被占用(netstat -tulnp | grep 27017)。
  2. 权限不足:确保运行用户对dbPath有读写权限(chown -R mongodb:mongodb /var/lib/mongodb)。
  3. 启动失败:查看日志(journalctl -u mongod)定位错误。

八、总结与扩展建议

MongoDB单机部署是快速验证业务的理想选择,但需注意:

  • 数据安全:定期备份,生产环境启用认证。
  • 性能监控:使用mongostatmongotop工具跟踪数据库活动。
  • 扩展规划:当数据量或并发量增长时,考虑迁移至副本集或分片集群。

通过本文的指导,开发者可高效完成MongoDB单机部署,并为后续的集群化升级奠定基础。