Skip to content
返回部署

部署 MongoDB

自托管 MongoDB,Docker、副本集和分片水平扩展。

平台高级

为什么

自托管 MongoDB 控制副本集拓扑、分片和存储引擎(WiredTiger)。分片跨 shard 水平扩展。

平台即服务采用率 2024 年增长 24%,团队从虚拟机管理转向 git push 部署。the cloud infrastructure market reached $330B in 2024, growing 22% year-over-year (Synergy Research),PaaS 层捕获了大多数新工作负载。

何时使用

文档工作负载、分片和自定义聚合用自托管 MongoDB。托管优先 Atlas。

如何做

1. Docker — mongo:7 镜像加 volume 2. 副本集 — 生产 HA 最少 3 节点 3. 初始化 — mongosh 中 rs.initiate() 4. 分片 — sh.addShard() 水平扩展 5. 认证 — 启用 auth,建用户 6. 备份 — mongodump 或 mongosync 持续 7. 监控 — mongostat、mongotop、免费监控

示例

# docker-compose.yml — 副本集 services: mongo1: { image: mongo:7, command: --replSet rs0, ports: ["27017:27017"] } mongo2: { image: mongo:7, command: --replSet rs0 } mongo3: { image: mongo:7, command: --replSet rs0 } # 初始化副本集 docker exec mongo1 mongosh --eval ' rs.initiate({ members: [ { _id: 0, host: "mongo1:27017" }, { _id: 1, host: "mongo2:27017" }, { _id: 2, host: "mongo3:27017" } ] })' # 连接字符串 mongodb://mongo1:27017,mongo2:27017,mongo3:27017/mydb?replicaSet=rs0 # 备份 mongodump --uri="mongodb://mongo1:27017" --out=/backup

常见问题

  • ⚠单节点无 HA — 仅开发,生产需 3 节点副本集
  • ⚠未启用 auth — 任何人可连,启用 auth 建管理员
  • ⚠环境间配置漂移 — 使用基础设施即代码(Terraform/Pulumi)保持 dev/staging/prod 一致

最佳实践

  • ✓始终用副本集(3 节点)— HA、自动故障转移、读扩展
  • ✓启用 auth 用 SCRAM-SHA-256 — MongoDB 7 默认
  • ✓设置健康检查和优雅关闭 — 处理 SIGTERM 以在退出前排空进行中的请求

常见问题解答