简介:本文全面解析MongoDB单机部署、单机副本集搭建及集群部署方案,涵盖配置详解、性能对比和故障处理策略,提供从开发测试到生产环境的完整实践路径。
单机部署是MongoDB最简单的运行方式,适合以下场景:
# Ubuntu安装示例sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 9DA31620334BD75D9DCB49F368818C72E52529D4echo "deb [ arch=amd64 ] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.4.listsudo apt updatesudo apt install -y mongodb-org# 启动服务sudo systemctl start mongod
关键配置文件/etc/mongod.conf核心参数:
storage:dbPath: /var/lib/mongodbjournal:enabled: truesystemLog:destination: filepath: /var/log/mongodb/mongod.lognet:port: 27017bindIp: 127.0.0.1
单机部署副本集(Single-Node Replica Set)提供:
// 1. 修改配置文件replication:replSetName: "rs0"// 2. 重启服务后初始化rs.initiate({_id: "rs0",version: 1,members: [{ _id: 0, host: "localhost:27017" }]})// 3. 验证状态rs.status()
选举超时问题:
"errmsg" : "No primary detected for set rs0"
解决方案:
members[n].priority配置oplog大小足够(建议至少1GB)标准三节点架构:
PrimarySecondarySecondary/Arbiter
配置示例:
rs.initiate({_id: "rsProd",members: [{ _id: 0, host: "mongo1:27017", priority: 3 },{ _id: 1, host: "mongo2:27017", priority: 2 },{ _id: 2, host: "mongo3:27017", arbiterOnly: true }]})
核心组件:
分片策略选择:
| 策略类型 | 优点 | 适用场景 |
|—————|———|—————|
| 范围分片 | 范围查询高效 | 时序数据 |
| 哈希分片 | 数据分布均匀 | 随机读写 |
| 复合分片 | 兼顾两者特性 | 混合负载 |
rs.printReplicationInfo()sh.status()| 指标 | 单机 | 单机副本集 | 集群 |
|---|---|---|---|
| 可用性 | 低 | 中 | 高 |
| 扩展性 | 无 | 有限 | 线性 |
| 管理成本 | 低 | 中 | 高 |
是否需要高可用?├─ 否 → 单机部署└─ 是 → 需要水平扩展?├─ 否 → 副本集(3节点)└─ 是 → 分片集群
模拟主节点宕机:
# 在主节点执行db.adminCommand({shutdown: 1, force: true})# 观察选举过程(应30秒内完成)rs.status() | grep stateStr
数据恢复流程:
mongorestore --oplogReplay通过本文的部署方案和实战示例,开发者可以构建从开发到生产全生命周期的MongoDB数据服务,在保证数据可靠性的同时满足不同规模的业务需求。