Skip to content

MongoDB - 部署

为生产环境部署 MongoDB 需要战略性方法。现代最佳实践侧重于高可用性、可伸缩性和强大的监控。单实例管理的时代已经过去;今天的应用程序依赖于集群化且通常基于云的部署。

您的主要部署选择是在完全托管的云服务或自托管环境之间进行。

  • MongoDB Atlas (推荐):一种完全托管的云原生数据库即服务 (DBaaS)。Atlas 自动处理 AWS、Azure 和 Google Cloud 上的配置、伸缩、备份、安全和监控。对于大多数新项目来说,它是推荐的路径,因为它消除了操作开销。
  • 自托管 (本地或私有云):您管理整个 MongoDB 基础设施,包括硬件、安装、配置和维护。这提供了最大的控制权,但需要大量的专业知识。MongoDB Kubernetes Operator 或 Ansible 等工具可以帮助自动化这些部署。
  • Replica Set(副本集):高可用性的基础。副本集是维护相同数据集的 MongoDB 服务器集群。一个节点充当主节点 (primary)(处理所有写入操作),而其他节点充当从节点 (secondary),复制主节点的数据。如果主节点发生故障,从节点会自动被选举为新的主节点,确保您的应用程序保持在线。
  • Sharding(分片):水平可伸缩性的基础。分片将数据分布在多个服务器(或副本集)上。这使得您的数据库可以超越单个服务器的限制进行伸缩,支持海量数据集和高吞吐量工作负载。MongoDB Atlas 可以自动化分片集群的设置和管理。

主动监控对于性能和稳定性至关重要。虽然仍存在传统的命令行工具,但现代部署依赖于全面的监控平台。

如果您使用 MongoDB Atlas,您将获得一套功能强大的内置监控套件。它提供了一个图形仪表盘,显示实时和历史指标,包括:

  • 操作计数:插入、查询、更新、删除。
  • 查询性能:使用性能顾问 (Performance Advisor) 识别慢查询。
  • 硬件使用情况:CPU、RAM、磁盘 IOPS 和存储。
  • 复制状态:副本集成员的延迟和健康状况。
  • 告警:配置关键事件的告警,例如 CPU 使用率过高或主节点降级。

自托管环境:MongoDB Ops Manager / Cloud Manager

Section titled “自托管环境:MongoDB Ops Manager / Cloud Manager”

对于自托管部署,Ops Manager 是 Atlas 控制平面的本地部署等效产品。它为您的基础设施提供监控、告警、备份和自动化功能。

mongostat 和 mongotop 仍然适用于对特定服务器进行快速、实时的诊断,但它们不能替代完整的监控系统。

  • mongostat:提供运行中的 mongod 或 mongos 实例状态的快速概览。它就像 MongoDB 的 vmstat。
  • mongotop:跟踪 MongoDB 实例在每个集合上读写数据所花费的时间。它对于识别哪些集合负载最重很有用。

要运行它们,您可以在终端中执行命令。例如:

# Example of running mongostat
mongostat --uri "mongodb+srv://<user>:<password>@<cluster-uri>"
# Example of running mongotop for 10 seconds
mongotop --uri "mongodb+srv://<user>:<password>@<cluster-uri>" 10