注意
Atlas Infinite 独立于计算管理存储并单独扩展存储,因此此页面上的存储配置选项应用于Atlas Core 集群。要学习;了解Atlas Infinite 支持哪些功能,请参阅公共预览版可用性。
在Atlas Core 集群上,存储性能随着存储容量的增加而扩展。在Atlas Infinite 集群上,集群层决定存储IOPS 和存储吞吐量值。要查看每个层级的存储性能,请参阅每个集群层的Atlas无限存储 IOP 和吞吐量值。
每个集群层均附带一组默认资源。M10+ 集群提供自定义存储容量的功能。
Atlas 可提供以下存储配置选项,具体取决于所选云提供商和集群层。
集群类
M40+ 集群提供多种选项,包括:
- Low CPU
- General
- Local NVMe SSD
所有生产环境都可以使用 General 选项。
在 Class(类别)框中选择您首选的速度。更改集群类别会影响费用。
低 CPU 类别
一般而言,Low CPU(低 CPU)选项可为需要较多内存和较少 CPU 的应用程序提供成本更低的替代方案。此选项包含的 vCPU 仅为附带 General(常规)选项的同一层级实例的一半。例如,一个 General(常规)M40 实例包括 4 个 vCPU,而一个 Low CPU(低 CPU)M40 实例仅包括 2 个 vCPU。根据集群层的不同,此选项还可能包括较少的最大连接数。要了解详情,请参阅连接限制和集群层。
注意
尽管用户界面显示 GB,Atlas 仍为 Low CPU 和 General 集群预配存储,以吉比字节 (GiB) 为单位。
NVMe 存储
对于某些在 AWS 或 Azure 上运行的专用集群,您可以选择 Local NVMe SSD 存储选项。本地连接的临时 NVMe 固态硬盘可提供最高级别的速度和性能。Atlas 为 NVMe 集群提供以千兆字节 (GB) 为单位的存储。
在Atlas Core 集群上,每当需要初始同步时,将始终使用基于文件副本的初始同步来同步NVME集群的所有节点。
注意
Atlas 不支持 Google Cloud 上的 NVMe 集群。
存储容量:
若要更改服务器数据卷大小,请执行以下任务之一:
移动滑动条,直到文本框显示首选磁盘尺寸。
在文本框中指定准确的磁盘大小。
有关Azure 的特定说明,请参阅更改Azure上的存储容量和 IOPS。
存储容量的变化会影响成本。
注意
MongoDB 将指定存储容量的一小部分用于缓冲区文件和日志文件,确保集群正常操作。在像 WiredTiger 存储引擎这样的无覆盖存储引擎中,应使用比压缩数据占用的磁盘空间约多 20% 的磁盘空间。
Oplog 大小行为
根据集群的数据库版本, Atlas以不同的方式管理集群的oplog大小及其条目。
在Atlas Infinite集群上, Atlas将oplog存储在存储层, Atlas Core存储自动伸缩不管理集群存储。要学习;了解更多信息,请参阅Atlas Infinite 集群上的 Oplog。
在Atlas Core集群上, oplog管理取决于是否为集群启用了存储自动伸缩:
Atlas 在默认情况下启用集群存储自动伸缩。如果您选择使用存储空间自动伸缩,Atlas 会根据最小 oplog 保留窗口 (oplogminRetentionHours) 设置来管理 oplog 条目。这些 oplog 条目均附带时间戳。oplog 窗口是指 oplog 中最新与最旧时间戳之间的时间差。
默认情况下,Atlas 将最小 oplog 保留窗口设置为 24 小时。这意味着,除非您将最小 oplog 保留窗口设置为特定的自定义值,否则 Atlas 集群的
mongod会将所有 oplog 条目保留至少 24 小时,直到 oplog 达到 MongoDB 最佳实践允许的最大大小。您可以在Atlas 用户界面中将最小oplog保留窗口设立为特定值。为了成功完成存储自动伸缩, Atlas要求最小oplog保留窗口(oplogMinRetentionHours) 不超过(60 秒)*(配置的磁盘空间GB)。
如果集群的存储容量减少,Atlas 会自动缩小 oplog 的大小,以确保其适合减少的存储大小。
注意
在某些大容量批量写入场景(如迁移)中,集群可能无法维护配置的最小 oplog 保留窗口。制定相应的计划,以实现 迁移和其他写入密集型操作。
您可以通过取消选择 Auto-scale 部分中的 Storage Scaling 复选框来退出集群存储自动伸缩。如果您选择退出存储自动伸缩, Atlas将按如下方式管理oplog大小:
在扩展集群的存储时,您可能会选择扩展 oplog 大小。在这种情况下,请在创建群集时手动将 oplog 大小设置为特定值。Atlas 在您增加集群存储时自动扩展 oplog 大小,如下所示:
对于 General(常规)和 Low-CPU(低 CPU)集群,oplog 大小会扩展并保持在存储容量的 5%,而不会超过根据 MongoDB 最佳实践所确定的某一最大值。
对于使用 NVMe 存储的集群,oplog 的大小在扩展时将保持在存储容量的 10%,不会超过根据 MongoDB 最佳实践确定的某个最大值。
如果扩展集群的存储, Atlas会使用之前的 oplog-to-disk 比率按扩展缩减oplog 。 示例,如果您使用25 GB的oplog (比率为0.25 )从100 GB扩展到50 GB ,则新oplog大小的比率也将为0.25 ,这将使其12.5 GB。 唯一的例外是新oplog大小小于存储容量的5 %(对于NVMe 存储,小于10 %)。 在这种情况下, Atlas会使用oplog大小的较高值,即存储容量的5 %(对于NVMe 存储为10 %)。
oplog对每个版本的自动伸缩的影响也不同:
在Atlas Core集群上, Atlas会延迟自动伸缩事件,直到oplog window覆盖估计的扩展时间。要防止窗口阻止扩展,设立最小oplog保留窗口。
在Atlas Infinite集群上,最小oplog保留窗口不会影响自动伸缩。要学习;了解更多信息,请参阅Atlas Infinite 集群上的 Oplog。
更改 AWS 上的存储容量或 IOPS
根据您是要增加还是减少 AWS 上的存储容量或存储吞吐量 (IOPS),Atlas 会以不同的方式处理更改。
重要
在任何 24 小时内,每个 EBS 卷最多可以进行 4 次修改。如果达到此限制, Atlas无法修改该卷,直到 24 小时窗口重置。
在不使用NVMe 存储的M40+ AWS 集群上, Atlas会使用 EBS 卷修改来支持基于云的初始同步期间的快速磁盘预热。要学习;了解更多信息,请参阅启用或禁用快速磁盘预热。
增加容量或吞吐量
如果之前的更改已完成,AWS 通常约需六小时才能增大存储容量或 IOPS。但是,此时间范围可能会根据磁盘上存储的数据大小而有所不同。要了解更多信息,请参阅 AWS 文档。Atlas 支持在卷修改更改的时间范围内进行更多更改。
AWS 支持满足以下条件的集群的扩展存储:
该集群是Atlas Core集群。
集群属于 General 或 Low-CPU 类
该集群是单区域集群。
如果您启用扩展存储,初始同步和跨项目快照恢复的速度会减慢,并可能降低高可用性。对于将来可能需要额外存储容量的集群,启用扩展存储是一种临时解决方案。我们建议您启用分片功能,以便长期扩展存储容量。
Atlas如何处理给定时间段内的其他更改取决于 AWS 对 EBS 卷修改的限制。 AWS 将 EBS 卷大小和吞吐量调整限制为在滚动 24 小时内每个卷最多只能进行四次修改。达到此限制后, Atlas会延迟该卷的额外存储容量或 IOPS 更改,直到 AWS 允许另一次修改。
对于第一个更改,Atlas在增加磁盘大小时就地修改数据卷,无需停机。
对于后续磁盘大小的增加:
数据卷大小自上次存储更改以来的时间Atlas 采取的操作小于 1 TB
少于 6 小时
Atlas 会预配新卷并同步旧卷中的数据。如果 Atlas 预配新卷,则您可访问集群。在 AWS 附加新卷之前,您无法访问 AWS 修改的节点。
小于 1 TB
6 小时或更长时间
Atlas会等到冷却时间到期,然后在不停机的情况下就地修改托管的数据卷。
超过 1TB
小于卷修改冷却时间(每 TB 6 小时)
Atlas 会预配新卷并同步旧卷中的数据。如果 Atlas 预配新卷,则您可访问集群。在 AWS 附加新卷之前,您无法访问 AWS 修改的节点。
超过 1TB
卷修改冷却时间或更长(每 TB 6 小时)
Atlas会等到冷却时间到期,然后在不停机的情况下就地修改托管的数据卷。这比预配新卷和将数据从旧卷同步到新卷所需的时间更少。如果您在上一个磁盘修改后的 4 小时内修改了磁盘大小,Atlas会首先优先考虑计算升级,然后是磁盘修改。
在应用存储容量或 IOPS 增加之前,Review Changes 页面会介绍Atlas如何实现增加。
如果Atlas在更改集群的存储容量或 IOPS 之前等待 AWS 允许再次修改卷,则 Clusters 页面会显示一条横幅:
- 某些 EBS 卷更改会延迟,因为 AWS 已达到 24 小时内该卷允许的 EBS 卷修改最大次数。
这些行为适用于 Atlas 在自动伸缩期间更改容量的情况。
要了解有关 AWS 限制的更多信息,请参阅 AWS 文档。
降低容量或吞吐量
AWS 不允许就地减少存储容量。
Atlas可以通过以下方式减少存储容量:首先预配新卷,然后通过就地数据同步进程将数据从旧卷同步到新卷。这可以绕过 AWS 限制,但在同步期间每个节点都会停机。与容量增加不同, Atlas始终使用此进程来减少容量,而无论卷修改冷却时间如何。
AWS 允许您在不迁移数据的情况下降低 IOPS。
如果卷修改冷却时间已过, Atlas会就地降低 IOPS,而无需重新启动节点。如果冷却时间尚未过去, Atlas可能会预配新卷并同步数据,从而导致滚动重启。
更改Azure上的存储容量和 IOPS
对于在 Azure 上部署的 Low CPU 或General 集群,您可以在 Atlas UI 中扩展 IOPS 和数据卷的存储容量。
如果增加 Low CPU 或General 集群的磁盘存储,您可以:
在同一集群层的集群上获得更多 IOPS。
使用这些集群来托管具有高 IO 工作负载要求的应用程序,无需通过配置分片将应用程序的工作负载分散到多个服务器上。
注意
并非所有 Azure 区域都支持扩展存储。有关详细信息,请参阅支持的区域。
Azure具有卷修改冷却时间,这可能会限制更改存储的频率。
重要
对于支持扩展存储/IOPS 的Azure集群,您可以在任意 24 小时内最多对磁盘 IOPS/吞吐量进行四次更改。如果达到此限制, Atlas会替换虚拟机 (VM) 以绕过此限制。
以下语句描述了 Atlas UI 中用于 IOPS 和 Azure 集群存储管理的选项。
最初,当您选择Azure Low CPU 或 General集群时, Atlas会根据您选择的层级分配默认存储大小和 IOPS。
注意
增加在Azure上部署的集群的 IOPS 时,值仅限于集群层的最大 IOPS。
以下各节介绍如何增加存储大小和 IOPS。
更改Azure上的数据卷大小
若要更改服务器的数据卷大小,请执行以下操作:
在 Cluster tier > Storage 部分中,您可以根据区域执行以下操作之一:
如果您的区域支持扩展存储,请将滑块向右移动并选择您喜欢的磁盘大小。
滑块右侧的文本框会动态更改,并指示新的磁盘大小。Atlas 还增加了 IOPS 以对应增加的存储大小。
如果您所在的区域不支持扩展存储,您可以按预设量增加磁盘容量。在这种情况下,Atlas 不会增加 IOPS。
对于增加的存储容量,Atlas会就地增加存储容量,而无需复制数据或执行初始同步。
注意
如果您更改为其他区域或多区域集群,则特定存储卷功能或扩展存储可能不可用。Atlas UI 会通知您 IOPS 将会降低。此更改可能会影响应用程序的性能、从备份恢复数据或将备份从这些区域复制到其他区域的速度。如要保持相同的性能,请继续使用相同的地区。如要了解更多信息,请参阅支持扩展存储的区域。
Azure不允许就地减少存储容量。 Atlas可以通过以下方式减少存储容量:首先预配新卷,然后通过就地数据同步进程将数据从旧卷同步到新卷。这可以绕过Azure限制,但同步期间每个节点都会有停机时间。
在应用存储容量减少之前,Review Changes 页面会通知您,当您进行此更改时, Atlas会触发集群的滚动重启。
在此期间,您仍可访问权限集群,但Azure修改的每个节点均不可用,直到该节点的数据同步进程完成。对于大型集群,每个节点的此进程可能需要几个小时才能完成。
要将集群总存储扩展为超出集群层的限制,您可以在“项目设置”中为支持扩展存储的区域启用扩展存储。
Azure支持满足以下条件的集群的扩展存储:
该集群是Atlas Core集群。
集群属于 General 或 Low-CPU 类
该集群是单区域集群。
如果您启用扩展存储,初始同步和跨项目快照恢复的速度会减慢,并可能降低高可用性。对于将来可能需要额外存储容量的集群,启用扩展存储是一种临时解决方案。我们建议您启用分片功能,以便长期扩展存储容量。
在Azure上配置扩展存储/IOPS
以下过程介绍了如何在同一集群层中增加存储大小时获得的 IOPS 数量之外,获取扩展 IOPS。
您可以更改支持扩展存储的区域的 M40+ Atlas集群的 IOPS 数。
扩展 IOPS 的数量:
更改 Google Cloud 上的存储容量
Google Cloud Platform 支持符合以下标准的集群的扩展存储:
该集群是Atlas Core集群。
集群属于 General 或 Low-CPU 类
该集群是单区域集群。
如果您启用扩展存储,初始同步和跨项目快照恢复的速度会减慢,并可能降低高可用性。对于将来可能需要额外存储容量的集群,启用扩展存储是一种临时解决方案。我们建议您启用分片功能,以便长期扩展存储容量。
与 AWS 不同,Google Cloud 没有卷修改冷却时间。因此,可以立即进行存储更改,而无需等待先前的修改完成。
当您增加集群的存储容量时,Atlas会以滚动方式修改服务器数据卷的大小,且无需停机。Atlas无需复制数据或执行初始同步即可就地增加存储容量。
但是,Google Cloud 不允许就地减少存储容量。如果减少集群的存储容量, Atlas会预配新卷,然后通过就地数据同步进程将数据从旧卷同步到新卷。这可以绕过 Google Cloud 限制,但在同步期间每个节点都会有停机时间。
在应用存储容量缩减之前,Review Changes 页面会通知您:当您进行此更改时,Atlas 会触发集群的滚动重启。
在此期间,您仍可访问权限集群,但 Google Cloud 修改的每个节点在节点的数据同步进程完成之前均不可用。对于大型集群,每个节点的此进程可能需要几个小时才能完成。
Atlas 对单个副本集有磁盘容量限制,对于更高的集群层可扩展到 4 TB。要将集群总存储空间扩展到默认限制以外,可以在项目设置中启用扩展存储。为适应未来的进一步扩展,可启用分片功能,以便实现长期扩展。
更改多云提供商集群的存储容量
Atlas 会在三个云提供商之间选择最小公分母。这确保了多云部署的一致性。
无法调整多云集群的 IOPS。
IOPS 类型
M30+ 集群提供不同的选项用于自定义 IOPS 量,具体取决于集群的云提供商和集群代数:
对于 AWS 上托管的集群,您可以分别对 Gen1 和 Gen2 专用集群使用预配置 IOPS 和高性能 IOPS。
对于托管在 AWS 或 Google Cloud 上的集群,您可以将扩展标准 IOPS 用于 Gen2 专用集群。
注意
对于 Gen1 M40+层级集群,您只能为 General 和 Low CPU 类中的集群自定义 IOPS。您无法在 Local NVMe SSD 类中为 Gen1 集群自定义 IOPS。
为 AWS 托管集群预配 IOPS 和高性能 IOPS
预配置 IOPS 和高性能 IOPS 可让您为 AWS 托管集群自定义最大 IOPS 速率,从而获得额外的性能优势。预配 IOPS 和高性能 IOPS 指的是同一概念,但 Gen1 集群在Atlas用户界面中使用 Provision IOPS,而 Gen2 集群使用 High Performance IOPS。为简单起见,我们在这里使用 High Performance IOPS 来指代两者。
标准 IOPS 使用 AWS 通用固态硬盘卷,这些卷旨在提供 99% 的时间的基准性能。高性能 IOPS 使用 AWS 预配 IOP 固态固态硬盘卷,这些固态硬盘卷旨在提供 99.9% 的时间预配性能。
较之标准 IOPS,高性能 IOPS:
更稳定地提供其配置的 IOPS 速率。
降低集群的 p90 延迟(衡量服务器的响应时间)。90% 的服务器请求的响应速度快于 p90 延迟值,因此较低的 p90 延迟值通常意味着更快的响应时间。
要了解详情,请参阅:
扩展标准 IOPS
AWS 或 Google Cloud 上的 Gen2 专用集群具有最低 IOPS 基准,您可以在此基础上预配额外的 IOPS:
对于磁盘存储低于
1000GB(1TB) 的集群,此基线为3000IOPS。对于磁盘存储超过
1000GB的集群,此基线会随存储扩展,IOPS 与GB的比率为 3:1。
注意
AWS 上托管的集群区分标准 IOPS 和预配或高性能 IOPS。这种区别源于集群的根本的固态硬盘卷,并且是 AWS 上托管的集群所独有的。
要学习;了解更多信息,请参阅预配 IOPS 和高性能 IOPS。
下表显示了此基准如何随各种磁盘大小进行扩展的非详尽示例:
磁盘存储 | 基线 IOPS |
|---|---|
|
|
|
|
|
|
|
|
要为集群预配额外的 IOPS,您可以对 AWS 或 Google Cloud 上托管的 Gen2 集群使用扩展标准 IOPS。扩展标准 IOPS 允许您预配多达:
80kAWS Gen2 专用集群的 IOPS160kGCP Gen2 专用集群的 IOPS
随着 IOPS 的增加,集群的可用磁盘吞吐量也会增加。
对于 Gen2 专用集群,您可以独立预配额外的 IOPS 并扩展存储容量,因此扩展其中一个集群无需扩展另一个集群。由于预配外 IOPS 和扩展存储容量是独立的,因此Atlas会分别对两者计费。
要了解详情,请参阅:
配置 IOPS 速率
Gen1 集群的标准 IOPS
如果您希望 IOPS 速率随着集群的存储容量而自动扩展,则在创建 AWS Gen1 M30+层级集群时不要选择 Provision IOPS。集群默认使用标准 IOPS。
如果要为 AWS集群预配精确的标准 IOPS 值,请参阅预配和高性能 IOPS。
注意
AWS 上托管的集群区分标准 IOPS 和预配或高性能 IOPS。这种区别源于集群的根本的固态硬盘卷,并且是 AWS 上托管的集群所独有的。
要学习;了解更多信息,请参阅预配 IOPS 和高性能 IOPS。
M30+层级集群的最低标准 IOPS 为 3000。除非您将集群存储大小设立为 1 TB 或更大,否则标准 IOPS 值将保持为 3000。如果您的 M30+集群的存储达到或超过 1 TB, Atlas会使用 IOPS 与存储的比率 3:1 来提高标准 IOPS 速率,AWS 网络存储卷最高可达 16k IOPS 。
Gen1 本地 NVMe 固态硬盘类集群必须使用标准 IOPS。
适用于 Gen2 集群的扩展标准 IOPS
要为集群预配额外的 IOPS,您可以对 AWS 或 Google Cloud 上托管的 Gen2 集群使用扩展标准 IOPS。扩展标准 IOPS 允许您预配多达:
80kAWS Gen2 专用集群的 IOPS160kGCP Gen2 专用集群的 IOPS
注意
AWS 上托管的集群区分标准 IOPS 和预配或高性能 IOPS。这种区别源于集群的根本的固态硬盘卷,并且是 AWS 上托管的集群所独有的。
要学习;了解更多信息,请参阅预配 IOPS 和高性能 IOPS。
如果您的 M30+层级Gen2 专用集群托管在 AWS 上,则必须首先选择 Cluster Tier 部分下 IOPS 旁边的 Standard。
然后,您可以执行以下任一操作:
在文本框中指定准确的 IOPS 速率,或
移动 IOPS 选项下方的滑动条,直到文本框显示您的首选 IOPS 速率。
预配和高性能 IOPS
仅 AWS 上的 M30+层级集群支持高性能 IOPS。要为 M30+层级AWS集群使用高性能 IOPS,请在 Cluster Tier 部分下的 IOPS 旁边,选择以下选项之一:
Provision IOPS 如果您正在使用 Gen1 集群。
High Performance IOPS 如果您正在使用 Gen2 集群。
然后,您可以执行以下任一操作:
在文本框中指定准确的 IOPS 速率,或
移动 IOPS 选项下方的滑动条,直到文本框显示您的首选 IOPS 速率。
最小磁盘容量与内存的比率
Atlas 对给定的集群层强制实施以下最小比率。这样可以使集群性能与大型数据集保持一致。
大小为 M10 到 M40 的实例的磁盘容量与系统内存之比为 60:1。对于大于 M40 的实例,此比率则为 120:1。
例子
要支持 3 TB(或 3,072 GB)磁盘容量,请选择至少具有 32 GB RAM 的集群层。这将是 M50 或更大。
Atlas 对单个副本集有磁盘容量限制,对于更高的集群层可扩展到 4 TB。要将集群总存储空间扩展到默认限制以外,可以在项目设置中启用扩展存储。为适应未来的进一步扩展,可启用分片功能,以便实现长期扩展。
自动扩展集群层和存储容量
Atlas 集群层级响应式自动伸缩适用于 General 和 Low-CPU集群类下的所有专用Atlas Core集群层。响应式自动伸缩也适用于Atlas Infinite 集群。
对于新集群,Atlas 会自动启用集群层自动伸缩和存储自动伸缩。
使用 Auto-scale(自动扩展)选项配置集群,以便根据集群使用情况自动扩展集群层、存储容量或两者。
重要
对于专用的Atlas Core 集群,如果恢复的快照大小大于目标集群的存储容量,则集群不会自动扩展。
您可以选择退出集群层和存储自动伸缩。要学习;了解更多信息,请参阅Atlas如何扩展集群层和Atlas如何扩展Atlas Core 上的集群存储。