Ubuntu下MongoDB安装与实战指南

作者:很酷cat2025.10.13 17:43浏览量:0

简介:本文详细讲解Ubuntu系统下MongoDB的安装配置流程,涵盖基础操作、数据管理和安全优化,适合开发者和DBA参考。

一、环境准备与系统兼容性

在Ubuntu系统上部署MongoDB前,需确认系统版本与MongoDB的兼容性。MongoDB官方提供针对Ubuntu 20.04 LTS (Focal Fossa)和22.04 LTS (Jammy Jellyfish)的稳定支持,建议使用LTS版本以获得长期维护。首先通过lsb_release -a命令检查系统版本,确保符合要求。

安装依赖时需注意:

  1. 基础工具sudo apt install wget curl gnupg2 lsb-release,其中gnupg2用于验证软件包签名,lsb-release帮助识别系统标识。
  2. 网络配置:确保服务器可访问外网,或配置本地镜像源加速下载。例如,使用阿里云镜像需在/etc/apt/sources.list中添加对应条目。
  3. 防火墙规则:若启用UFW,需开放27017端口(默认MongoDB端口),命令为sudo ufw allow 27017/tcp

二、MongoDB安装的三种方式

1. 官方APT仓库安装(推荐)

这是最稳定的安装方式,步骤如下:

  1. # 导入公钥
  2. wget -qO - https://www.mongodb.org/static/pgp/server-6.0.asc | sudo apt-key add -
  3. # 添加仓库(以Ubuntu 22.04为例)
  4. echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu jammy/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

安装完成后,服务会自动注册为systemd单元,可通过sudo systemctl status mongod验证状态。

2. 手动下载TGZ包安装

适用于需要特定版本或离线环境:

  1. # 下载(示例为6.0.5版本)
  2. wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-ubuntu2204-6.0.5.tgz
  3. # 解压并移动
  4. tar -xzvf mongodb-linux-*.tgz
  5. sudo mv mongodb-* /opt/mongodb
  6. # 配置环境变量
  7. echo 'export PATH=/opt/mongodb/bin:$PATH' >> ~/.bashrc
  8. source ~/.bashrc

需手动创建数据目录和配置文件,灵活性更高但维护成本增加。

3. Docker容器化部署

适合快速测试和微服务架构:

  1. # 拉取官方镜像
  2. docker pull mongo:6.0
  3. # 运行容器(带认证)
  4. docker run -d --name mongodb \
  5. -p 27017:27017 \
  6. -e MONGO_INITDB_ROOT_USERNAME=admin \
  7. -e MONGO_INITDB_ROOT_PASSWORD=secure123 \
  8. mongo:6.0 --auth

通过docker exec -it mongodb mongosh可进入容器内Shell操作。

三、核心配置与优化

1. 配置文件详解

主配置文件位于/etc/mongod.conf,关键参数包括:

  • 存储引擎storage.engine: wiredTiger(默认高性能引擎)
  • 数据目录storage.dbPath: /var/lib/mongodb
  • 日志路径systemLog.path: /var/log/mongodb/mongod.log
  • 绑定IPnet.bindIp: 0.0.0.0(生产环境建议限制为内网IP)

修改后需重启服务:sudo systemctl restart mongod

2. 性能调优参数

  • 内存缓存wiredTiger.engineConfig.cacheSizeGB: 2(根据可用内存调整)
  • 并发控制operationProfiling.mode: slowOp(记录慢查询)
  • 连接数限制net.maxIncomingConnections: 1000(高并发场景调整)

四、基础操作与CRUD实践

1. 连接与认证

  1. // 本地无认证连接
  2. mongosh
  3. // 带认证连接
  4. mongosh "mongodb://admin:secure123@localhost:27017/?authSource=admin"

2. 数据库操作示例

  1. // 创建数据库(自动创建)
  2. use testdb
  3. // 插入文档
  4. db.users.insertOne({name: "Alice", age: 28, skills: ["JS", "Python"]})
  5. // 查询文档
  6. db.users.find({age: {$gt: 25}}, {name: 1, _id: 0})
  7. // 索引创建
  8. db.users.createIndex({name: 1}, {unique: true})
  9. // 聚合查询
  10. db.users.aggregate([
  11. {$match: {skills: "Python"}},
  12. {$group: {_id: null, avgAge: {$avg: "$age"}}}
  13. ])

3. 备份与恢复

  1. # 完整备份
  2. mongodump --uri="mongodb://admin:secure123@localhost" --out=/backup/
  3. # 恢复数据
  4. mongorestore --uri="mongodb://admin:secure123@localhost" /backup/testdb/

五、安全加固方案

1. 启用认证与角色管理

  1. // 创建管理员用户
  2. use admin
  3. db.createUser({
  4. user: "superadmin",
  5. pwd: "ComplexPass123!",
  6. roles: ["root"]
  7. })
  8. // 创建应用用户
  9. use testdb
  10. db.createUser({
  11. user: "appuser",
  12. pwd: "AppPass456!",
  13. roles: ["readWrite"]
  14. })

2. TLS加密配置

生成证书后修改配置:

  1. net:
  2. tls:
  3. mode: requireTLS
  4. certificateKeyFile: /etc/ssl/mongodb.pem
  5. CAFile: /etc/ssl/ca.pem

3. 审计日志

启用操作审计:

  1. auditLog:
  2. destination: file
  3. format: JSON
  4. path: /var/log/mongodb/audit.json

六、常见问题排查

  1. 服务启动失败:检查日志journalctl -u mongod -n 50,常见原因包括端口占用、数据目录权限错误。
  2. 连接超时:验证防火墙规则、SELinux状态(sudo setenforce 0临时禁用测试)。
  3. 性能下降:使用mongotopmongostat监控,检查索引缺失情况。

七、进阶实践建议

  1. 分片集群部署:适合超大规模数据,需配置config serversmongos路由和多个shard
  2. 变更流监控:通过db.collection.watch()实现实时数据变更通知。
  3. Atlas云服务:对于不想管理基础设施的用户,MongoDB Atlas提供全托管服务,支持跨区域部署。

通过系统化的安装配置和深入的操作实践,开发者可在Ubuntu环境下高效利用MongoDB构建现代应用。建议定期参考官方文档更新知识,关注版本升级带来的新特性(如7.0版本的时序集合支持)。