MongoDB 单机部署:从安装到优化的完整指南

MongoDB 单机部署:从安装到优化的完整指南

MongoDB 作为一款流行的非关系型数据库(NoSQL),以其灵活的数据模型、高性能和可扩展性著称。对于开发测试环境或小型应用而言,单机部署 MongoDB 既简单又经济。本文将详细介绍如何在 Linux 系统上完成 MongoDB 的单机部署,包括安装、配置、启动及基础优化等关键步骤。

一、环境准备

1.1 系统要求

MongoDB 支持多种操作系统,包括 Linux、Windows 和 macOS。对于生产环境,推荐使用 Linux 系统(如 Ubuntu、CentOS),因其稳定性和性能更优。本文以 Ubuntu 20.04 LTS 为例。

  • 硬件要求:至少 2GB RAM(生产环境建议 8GB+),足够的磁盘空间(根据数据量决定)。
  • 软件依赖:确保系统已安装 curlwget 等基本工具,以及 libcurl4openssl 等库。

1.2 安装前的检查

在安装前,建议更新系统包列表并安装必要的依赖:

  1. sudo apt update
  2. sudo apt install -y curl wget libcurl4 openssl

二、MongoDB 安装

2.1 添加 MongoDB 官方仓库

MongoDB 提供了官方的 APT 仓库,便于安装和管理。首先,导入 MongoDB 的 GPG 公钥:

  1. wget -qO - https://www.mongodb.org/static/pgp/server-6.0.asc | sudo apt-key add -

然后,创建 /etc/apt/sources.list.d/mongodb-org-6.0.list 文件,添加 MongoDB 仓库:

  1. echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu $(lsb_release -sc)/mongodb-org/6.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list

2.2 安装 MongoDB

更新包列表后,安装 MongoDB 社区版:

  1. sudo apt update
  2. sudo apt install -y mongodb-org

安装完成后,MongoDB 服务会自动注册为系统服务,但默认不会启动。

三、配置 MongoDB

3.1 数据目录设置

MongoDB 默认将数据存储在 /var/lib/mongodb,日志文件在 /var/log/mongodb。如需自定义路径,编辑 MongoDB 的配置文件 /etc/mongod.conf

  1. storage:
  2. dbPath: /data/mongodb # 自定义数据目录
  3. journal:
  4. enabled: true
  5. systemLog:
  6. destination: file
  7. path: /var/log/mongodb/mongod.log # 日志文件路径
  8. logAppend: true

确保数据目录存在且 MongoDB 用户有读写权限:

  1. sudo mkdir -p /data/mongodb
  2. sudo chown -R mongodb:mongodb /data/mongodb

3.2 绑定 IP 和端口

默认情况下,MongoDB 只监听本地回环地址(127.0.0.1)。如需远程访问,需修改 net 部分:

  1. net:
  2. port: 27017
  3. bindIp: 0.0.0.0 # 允许所有IP访问,生产环境应限制为特定IP

安全警告:开放所有 IP 访问存在安全风险,生产环境应通过防火墙或网络配置限制访问来源。

3.3 启用认证

为增强安全性,建议启用 MongoDB 的认证机制。在 /etc/mongod.conf 中添加:

  1. security:
  2. authorization: enabled

然后,重启 MongoDB 服务并创建管理员用户:

  1. sudo systemctl restart mongod
  2. mongo --host 127.0.0.1
  3. # 在MongoDB shell中执行
  4. use admin
  5. db.createUser({
  6. user: "admin",
  7. pwd: "your_secure_password",
  8. roles: ["root"]
  9. })
  10. exit

之后,连接时需提供用户名和密码:

  1. mongo --host 127.0.0.1 -u admin -p your_secure_password --authenticationDatabase admin

四、启动与管理 MongoDB

4.1 启动与停止

使用 systemctl 命令管理 MongoDB 服务:

  1. sudo systemctl start mongod # 启动
  2. sudo systemctl stop mongod # 停止
  3. sudo systemctl restart mongod # 重启
  4. sudo systemctl status mongod # 查看状态

4.2 日志查看

MongoDB 的日志文件默认位于 /var/log/mongodb/mongod.log,可通过以下命令查看:

  1. tail -f /var/log/mongodb/mongod.log

五、性能优化

5.1 调整内存配置

MongoDB 依赖内存进行数据缓存。对于大型数据集,可适当增加 wiredTigerCacheSizeGB(WiredTiger 存储引擎的缓存大小):

  1. storage:
  2. wiredTiger:
  3. engineConfig:
  4. cacheSizeGB: 2 # 根据可用内存调整

5.2 索引优化

合理创建索引可显著提升查询性能。使用 explain() 分析查询计划:

  1. db.collection.find({field: "value"}).explain("executionStats")

根据结果创建或优化索引:

  1. db.collection.createIndex({field: 1}) # 1表示升序,-1表示降序

5.3 定期维护

  • 日志轮转:配置 logrotate 定期清理旧日志。
  • 数据备份:使用 mongodumpmongorestore 工具定期备份数据。
  1. mongodump --host 127.0.0.1 --db your_db --out /backup/path
  2. mongorestore --host 127.0.0.1 --db your_db /backup/path/your_db

六、总结

MongoDB 单机部署适用于开发测试和小型应用,其安装与配置过程相对简单。通过合理配置数据目录、网络访问、安全认证及性能参数,可以构建一个稳定高效的 MongoDB 数据库环境。然而,对于生产环境,还需考虑高可用性、数据分片及更严格的安全措施。希望本文能为开发者提供实用的指导,助力快速上手 MongoDB。