生产说明
在此页面上
Overview
使用 MongoDB Atlas 作为您的数据平台,您的运营重点可以从构建和维护数据库基础架构所需的繁琐运营任务和工作流程,转移到专注于帮助工程师为业务增加价值。工程师无需维护硬件和更新操作系统级别的软件补丁,而是可以将时间和精力投入到开发满足企业当前和未来需求的数据模型上。
本文档概述了使用 MongoDB Atlas 集群建立和维护成功的 MongoDB 生产部署的一些最佳实践。
提示
另请参阅:
要学习;了解大小调整注意事项,请参阅 Atlas集群大小调整和层级选择。
如需了解有关弹性的更多信息,请参阅“使用 MongoDB Atlas 构建弹性应用程序”。
要了解有关持续云备份的更多信息,请参阅使用持续云备份实现任意时间点恢复。
角色和职责
MongoDB 管理和运营向客户提供 MongoDB 数据库服务所需的基础架构。MongoDB 的职责包括以下内容:
管理数据库集群和底层基础架构,确保 MongoDB 的可用性、稳定性和性能,并为
M10
及更大规模的集群提供99.995 % 正常运行时间服务级别协议 (SLA)的支持。确保底层计算节点的健康。确保这些节点正在运行,具备网络连接,并安装了所有建议的操作系统级补丁,以维持正常运行时间服务级协议 (Uptime SLA)。
根据客户通过 Atlas 用户界面或 REST API 做出的特定设计选择,管理 MongoDB 数据库配置。
自动应用所有 MongoDB 维护升级,确保产品具有最新的错误修复。
管理安全配置文件,包括基于角色的访问控制、向 IP 访问列表添加 IP 地址以及对等互连,以根据客户的指示最大限度地提高集群安全性。
提供备份和恢复服务。
客户继续开发和部署访问 MongoDB 的应用程序,而无需直接管理底层数据库资源和/或基础架构。
集群管理
重要
Atlas不支持将集群从一个项目移动到另一个项目。 相反,请执行实时迁移。
MongoDB Atlas抽象了数据库操作,以便您可以专注于高价值、高级别的管理决策。 您可以使用Atlas Atlas user角色 管理对 集群的访问权限。您只能在组织级别或项目级别应用这些权限。 因此,应仔细规划组织和项目的层次结构。
提示
如果您需要创建超过 Atlas 组织限制(250 个)的项目,请创建更多组织来存储项目。要了解详情,请参阅 Atlas 组织和项目限制。
要在Atlas中创建设计良好的组织和项目层次结构,请将集群分解为对您的使用案例有意义的项目。 这样可以最大限度地提高企业效率,同时最大限度地减少运营摩擦。
组织级别
在组织级别,您可以实施安全控制并创建跨一个或多个项目的用户。Atlas 计费在组织级别进行。
为有效控制用户访问和权限,可在组织级别将用户分组为团队。
项目级别
项目提供安全隔离和授权边界,因此通常按应用程序团队和应用程序环境分配。例如,两个应用程序团队中可能有六个项目:每个团队在“开发”、“过渡”和“生产”环境中分别有一个项目。
您可以创建项目级 Atlas 用户和角色,以相应访问不同的生产和开发应用程序环境。
拥有
Project Read Only
角色的用户可以访问项目级监控和系统健康状况元数据,但无法访问任何集合数据或管理操作。具有
Project Cluster Manager
角色的用户可以扩展集群并执行其他管理操作,但没有数据级访问权限。
其他项目级职责包括:
配置终止保护以防止用户意外删除集群。
实施可选的企业安全功能,包括:
设置网络访问配置,包括
通过 Atlas 接口或 API 定义适当的数据库警报,并对任何需要注意的警报做出响应。
与外部监控/警报系统集成,例如 DataDog 和 New Relic。
重要
自 2021 年 6 月 16 日星期三起,New Relic 不再支持与 MongoDB 的基于插件的集成。建议不要注册基于插件的集成。
要学习;了解更多信息,请参阅 New Relic 插件 EOL 声明。
集群命名约定
为您的 Atlas 集群选择正确的命名规范,是成功运行生产环境的第一步。一经命名,就无法对集群进行重命名,因此首次正确命名非常重要。以下建议可以帮助您更轻松地解析日志并区分集群。
一些较好的集群名称示例:
prod-aws-website
staging-gcp-internal
dev-azure-analytics
单区域和多区域集群
高可用性和集群持久性取决于集群的区域部署配置。部署在单个区域内的集群分布在该区域内的各个可用区域,可以承受部分区域中断的情况,因为读取或写入操作不会中断。
您可以选择将集群分布在两个或更多地区,以提高韧性和工作负载隔离性。
区域顺序决定了主节点位置的优先顺序。因此,如果您希望在特定区域可用时将数据库写入操作定向到该区域,应先列出该区域。如果第一个区域不可用,应将列表中的第二个区域作为写入操作的备选定向目标。
以下示例来自 Atlas Create a Cluster(创建集群)用户界面,显示了一个多区域集群,它在三个不同区域中具有可选举节点,按优先级从高到低排列:
如果 us-east-1 区域不可用,则将在 us-west-1 区域中选出新的主要区域。
注意
集群必须具有奇数个节点,以确保能够选举出主节点。要了解详情,请参阅副本集选举。
在两个区域部署
将集群部署到两个区域可确保数据副本始终保留在一个以上的区域中。然而,包含集群中大多数节点的区域丢失将使第二个区域处于只读状态,直到管理员干预或原始区域再次可用。
在三个或更多区域部署
将集群部署到三个或更多区域可确保集群能够承受全区域级别的中断,同时保持读写可用性,前提是应用程序层具有容错能力。
如果始终在首选地区保持写入操作是当务之急,则建议部署集群,使至少两个可选节点位于首选地区中的至少两个数据中心。
Atlas 全球集群
为在全球部署中获得最佳数据库性能,用户可以配置全球集群,这种集群使用位置感知的分片来最大限度地减少读写延迟。有地理存储要求的用户还可以确保数据存储在特定的地理区域。
敏感信息
请勿为以下项目提供敏感信息,如个人身份信息 (PII) 或受保护的健康信息 (PHI):
应用程序 管理
应用程序级职责包括:
模式设计,包括查询和索引优化。
集群层级和拓扑结构选择。选择适当的集群大小和拓扑结构(副本集或分片集群)以及存储容量和 IOPS,对于获得最佳数据库性能至关重要。
预配非生产集群。可以使用 Atlas UI 或 API 将生产备份恢复到非生产集群中。
容量规划。确定何时需要额外的计算能力,通常使用 Atlas 提供的监控遥测功能。 可以在不关停应用程序的情况下增加容量,并且您可以选择启用自动伸缩以自动响应使用量激增。
决定何时实施主要数据库版本升级。
实施并测试备份和恢复计划。
通过测试确保应用程序从容应对集群故障转移。
使用 BI Connector 和 Charts 等工具配置数据分析服务。
扩展集群
MongoDB Atlas 提供两种扩展方法:垂直扩展和水平扩展。
纵向扩展涉及提高集群的存储容量、计算能力和/或 IOPS速率。 垂直扩展可以快速完成,在高峰使用期间非常有用。 从共享集群( M2
和M5
)进行垂直扩展需要几分钟的停机时间,而专用集群( M10
及更高版本)之间的扩展无需停机。
垂直扩展时,建议在生产环境中使用 M30
及更高版本的集群。您可以使用以下集群层作为低流量应用程序的生产环境,但建议将这些层用于开发环境:
M2
和M5
共享集群M10
和M20
个专用集群
水平扩展 涉及在现有分片集群中实现分片或添加分片。水平扩展需要仔细的规划和执行,并且是 M30+
集群长期增长战略的一部分。您还可以减少分片集群中的分片数量。
重要
当您删除分片时,Atlas 使用 movePrimary 命令,将该分片中任何未分片的数据库移动到剩余的分片。
在分片移除过程中,所有分片集合均会保持在线并可用。但是,在 movePrimary
操作期间对未分片的集合进行读取或写入操作则可能会导致意外行为,其中包括迁移失败或数据丢失。
我们建议在删除主分片之前移动包含未分片集合的任何数据库的主节点。
有关更多信息,请参阅从现有分片集群删除分片。
Atlas 中可以组合垂直和水平分片。例如,分片集群可以在高峰期垂直扩展,从而增加各个分片集群成员的存储容量和计算能力。
默认情况下,Atlas 会将集群存储垂直自动扩展到您配置的集群层大小限制。
您可以将 Atlas 配置为自动扩展集群层和集群存储容量,以应对集群使用量的增加,从而快速、自动地响应对更大存储计算能力的需求。
多租户
您可以使用 Atlas 实施多租户,以便应用程序的单个实例为多个租户提供服务。随着时间的推移,随着需求的发展或扩展预期的变化,您最初为多租户架构所做的设计决策可能会产生意想不到的效果。要了解详情,请参阅构建多租户架构。
卸载和查询存档数据
作为数据生命周期的一部分,如果您需要将冷数据移动到不同的存储层,则可以设置 Atlas Online Archive 规则,根据日期或自定义标准移动数据。Atlas 存档您不常访问的数据后,您就可以通过只读联合数据库实例获得 Atlas 和 Online Archive 数据的统一视图。
查询联合数据
您可以使用 Atlas Data Federation 跨不同基础设施就地查询数据,或在不同系统之间移动数据。您可以对来自多个源的数据使用聚合管道,以从数据中提取见解或将其转换用于其他目的。例如,您可以使用 $out to S3 和 $out to Atlas 在存储层之间移动数据。您还可以使用 $out to S3 轻松地将 Atlas 集群中的数据转换为 JSON、BSON、CSV、制表符分隔值(TSV)、Avro、Parquet 和 ORC,并将其导入 AWS S3,为需要访问的下游系统提供数据。
审核临时数据库用户
为所有数据库用户(包括应用程序服务用户)启用审核可能会严重影响集群性能。如果需要审核临时数据库用户的操作,您可以创建一个用于审核的自定义角色,并创建具有更高权限的临时用户,然后将自定义角色授予该用户以审核其操作。
要审核临时数据库用户的操作,请执行以下步骤:
创建用于审核的自定义角色。
创建针对审计的自定义角色。
启用数据库审计。
要审计所创建角色的 CRUD 操作,请启用数据库审计。
创建临时用户。
要审核其操作,请创建一个临时用户。
为用户分配为审核创建的自定义角色。创建用户时,选择 Save as temporary user 选项,然后选择希望用户存在的时间段。当这段时间过去时,Atlas 将删除该用户。
添加临时 IP 访问列表条目。
添加临时 IP 访问列表条目以限制临时用户对 Atlas 集群的访问权限。
当您为临时用户创建 IP 访问列表条目时,请选择Save as temporary access list选项,然后选择您希望访问列表条目存在的时间段。在这段时间过后,Atlas 会删除访问列表条目。
下载日志。
如需审核临时数据库用户的操作,请下载日志。
可选监控和日志记录集成
您可以使用 DataDog 为 Atlas 配置基于推送的监控集成。您还可以使用 Atlas 管理 API 拉取监控数据。
您可以使用 jSonar 配置基于提取的日志记录集成,这些日志记录可以推送到 Splunk 和 SumoLogic 等其他服务。您还可以使用 Atlas 管理 API 每 5 分钟提取一次日志数据。
管理集群数据卷
Atlas 提供以下内置工具,帮助您管理集群数据量:
集群自动伸缩会自动对应用程序负载做出反应并调整集群层级。
在线存档可自动存档不常访问的数据。
搜索节点可独立扩展,并从集群中卸载Atlas Search和Atlas Vector Search索引存储。
TTL 索引可自动从时间序列集合中删除文档以释放空间。
除了这些工具之外,您还可以参阅集群大小指南来了解如何调高或调低集群的大小。您还可以暂停集群以节省成本,方法是暂时关闭它,同时保留数据最多 30 天。
支持
可提供不同层级的支持,包括针对开发中的客户和企业客户的选项。
可能支持的区域包括:
所管理的 MongoDB 集群的问题和关注点。
与性能相关的查询。
应用程序端和驱动程序咨询。