1. MongoDB简介与Ubuntu24.04环境适配MongoDB作为当下最流行的NoSQL数据库之一特别适合处理大数据场景下的非结构化数据。我第一次在项目中使用MongoDB是在2015年当时就被它灵活的文档存储模式所吸引。与传统的关系型数据库相比MongoDB就像是一个智能的文件柜不需要预先设计严格的表格结构随时可以新增不同类型的文件。在Ubuntu24.04这个最新的LTS版本上部署MongoDB有几个明显优势。首先是软件包依赖的完整性新系统自带更新的依赖库避免了常见的兼容性问题。其次是性能优化Ubuntu24.04默认使用的Linux内核针对新型硬件做了特别优化这对MongoDB的读写性能有直接提升。实测下来同样的查询操作在24.04上比在20.04上要快15%左右。MongoDB 8.0版本引入了几项重要改进事务支持现在可以像传统数据库一样支持多文档ACID事务字段级加密客户端数据加密功能更加完善查询优化器复杂查询的执行效率显著提升时间序列集合专门为物联网场景优化的存储格式2. 安装前的系统准备2.1 硬件需求评估虽然MongoDB可以在配置较低的机器上运行但为了获得最佳性能建议满足以下配置生产环境至少16GB内存 SSD存储开发测试4GB内存 普通硬盘即可CPU建议4核以上MongoDB能很好利用多核性能我曾在阿里云2核4G的ECS上部署过测试环境处理百万级文档时响应速度依然不错。关键是要给MongoDB配置足够的缓存可以通过修改配置文件的wiredTiger缓存大小参数来优化。2.2 系统依赖安装在Ubuntu24.04上需要先安装几个基础工具sudo apt update sudo apt install -y gnupg curl software-properties-common这里有个小技巧如果遇到网络问题导致apt update失败可以尝试更换软件源。我常用阿里云的镜像源速度稳定sudo sed -i s/archive.ubuntu.com/mirrors.aliyun.com/g /etc/apt/sources.list2.3 安全加固准备MongoDB默认安装后是不启用认证的这在实际项目中非常危险。建议在安装前就规划好安全策略准备管理员账号密码规划网络访问白名单考虑是否启用TLS加密准备监控方案如Prometheus Grafana3. MongoDB 8.0详细安装步骤3.1 添加官方软件源首先导入MongoDB的GPG密钥这是确保软件包完整性的关键步骤curl -fsSL https://www.mongodb.org/static/pgp/server-8.0.asc | \ sudo gpg -o /usr/share/keyrings/mongodb-server-8.0.gpg --dearmor然后添加APT源配置注意Ubuntu24.04的代号是nobleecho deb [ archamd64,arm64 signed-by/usr/share/keyrings/mongodb-server-8.0.gpg ] \ https://repo.mongodb.org/apt/ubuntu noble/mongodb-org/8.0 multiverse | \ sudo tee /etc/apt/sources.list.d/mongodb-org-8.0.list3.2 安装MongoDB服务更新软件包索引后直接安装最新版sudo apt update sudo apt install -y mongodb-org安装完成后验证版本mongod --version正常应该显示类似这样的输出db version v8.0.6 Build Info: { version: 8.0.6, gitVersion: c56e8b0c34b9deb6b1d48a9366e5b84b8a40d6d6, modules: [], allocator: tcmalloc, environment: { distmod: ubuntu2204, distarch: x86_64, target_arch: x86_64 } }3.3 服务管理配置启动MongoDB服务并设置开机自启sudo systemctl start mongod sudo systemctl enable mongod检查服务状态sudo systemctl status mongod看到active (running)就说明服务正常运行了。4. 基础配置与安全加固4.1 配置文件详解MongoDB的主配置文件位于/etc/mongod.conf几个关键配置项storage: dbPath: /var/lib/mongodb # 数据存储目录 journal: enabled: true # 启用日志确保崩溃恢复 systemLog: destination: file logAppend: true path: /var/log/mongodb/mongod.log # 日志路径 net: port: 27017 bindIp: 127.0.0.1 # 生产环境建议改为内网IP4.2 启用认证机制先连接mongo shellmongosh创建管理员用户use admin db.createUser({ user: admin, pwd: StrongPassword123, // 实际使用要设置复杂密码 roles: [root] })然后修改配置文件启用认证security: authorization: enabled重启服务使配置生效sudo systemctl restart mongod4.3 网络访问控制建议配置防火墙限制访问sudo ufw allow from 192.168.1.0/24 to any port 27017 # 只允许内网访问 sudo ufw enable5. 实战操作与性能调优5.1 基本CRUD操作使用认证方式连接mongosh -u admin -p StrongPassword123 --authenticationDatabase admin创建测试数据库和集合use testdb db.createCollection(users)插入文档的几种方式// 单条插入 db.users.insertOne({ name: 张三, age: 28, skills: [Java, Python], joinDate: new Date() }) // 批量插入 db.users.insertMany([ {name: 李四, department: 研发}, {name: 王五, email: wangexample.com} ])5.2 索引优化技巧创建合适的索引能极大提升查询性能// 单字段索引 db.users.createIndex({name: 1}) // 复合索引 db.users.createIndex({department: 1, joinDate: -1}) // 文本索引 db.users.createIndex({bio: text})查看索引使用情况db.users.find({name: 张三}).explain(executionStats)5.3 性能监控方案安装mongodb-exporter配合Prometheus监控docker run -d --name mongo-exporter \ -p 9216:9216 \ -e MONGODB_URImongodb://admin:StrongPassword123localhost:27017 \ bitnami/mongodb-exporter:latest关键监控指标包括查询延迟连接数内存使用操作计数器6. 常见问题排查6.1 服务启动失败排查首先检查日志tail -n 50 /var/log/mongodb/mongod.log常见错误及解决方案端口冲突修改配置文件中的端口号权限问题确保/var/lib/mongodb目录mongodb用户有写权限磁盘空间不足清理日志或扩容磁盘6.2 连接问题诊断测试本地连接telnet 127.0.0.1 27017如果连接被拒绝检查服务是否运行防火墙设置bindIp配置是否正确6.3 性能问题分析使用内置profilerdb.setProfilingLevel(1, 50) // 记录超过50ms的操作 db.system.profile.find().sort({ts:-1}).limit(10)关键性能优化点添加合适索引优化查询语句调整wiredTiger缓存大小升级硬件配置