一般性问题
什么是 Amazon DocumentDB(与 MongoDB 兼容)?
Amazon DocumentDB(与 MongoDB 兼容)是一项快速、可扩展、高度可用且完全托管的企业文档数据库服务,支持原生 JSON 工作负载。作为一个文档数据库,Amazon DocumentDB 使得存储、查询和索引 JSON 数据变得简单。开发人员可以使用与今天相同的 MongoDB 应用程序代码、驱动程序和工具来运行、管理和扩展 Amazon DocumentDB 上的工作负载。享受改进的性能、可扩展性和可用性,而无需担心底层基础设施的管理。
客户可以使用 AWS Database Migration Service(DMS),轻松地将本地部署或 Amazon Elastic Compute Cloud(EC2)MongoDB 非关系数据库迁移到 Amazon DocumentDB,并且几乎不会出现停机。使用 Amazon DocumentDB 无需前期投资,客户只需为他们使用的容量付费。
哪些使用案例适用于如 Amazon DocumentDB 的文档数据库?
针对文档的数据库是 NoSQL 数据库中增长最快的类别之一,主要原因是文档数据库既提供了灵活的模式,又提供了广泛的查询能力。对于那些需要特别查询、索引和聚合的动态数据集,文档模型是一个很好的选择。Amazon DocumentDB 的规模十分广泛,它被各种各样的客户用于内容管理、个性化、目录、移动和网络应用、物联网和档案管理等用例。
“与 MongoDB 兼容”意味着什么?
“与 MongoDB 兼容”意味着 Amazon DocumentDB 可与 Apache 2.0 开源 MongoDB 3.6、4.0 和 5.0 API 进行交互。因此,您可以将相同的 MongoDB 驱动程序、应用程序和工具与 Amazon DocumentDB 配合使用,但只需进行少量更改或无需任何更改。虽然 Amazon DocumentDB 支持客户实际使用的绝大多数 MongoDB API,但它不支持所有的 MongoDB API。我们的重点一直是提供客户实际使用和所需的功能。
自推出以来,我们一直在与客户展开逆向思维合作,并提供了另外 80 多项功能,包括 MongoDB 4.0 和 5.0 兼容性、事务处理和分片。要了解有关支持的 MongoDB API 的更多信息,请参阅兼容性文档。要了解有关最近 Amazon DocumentDB 发布的更多信息,请参阅 Amazon DocumentDB 资源页面上的“Amazon DocumentDB 公告”。
Amazon DocumentDB 是否受 MongoDB SSPL 许可证的限制?
否。Amazon DocumentDB 不使用任何 MongoDB SSPL 代码,因此不受此许可证的限制。相反,Amazon DocumentDB 可与 Apache 2.0 开源 MongoDB 3.6、4.0 和 5.0 API 进行交互。我们将继续倾听客户的心声,与他们开展逆向思维合作,以提供他们所需的功能。要了解有关支持的 MongoDB API 的更多信息,请参阅兼容性文档。要了解有关最近 Amazon DocumentDB 发布的更多信息,请参阅 Amazon DocumentDB 资源页面上的“Amazon DocumentDB 公告”。
如何将数据从现有 MongoDB 数据库迁移到 Amazon DocumentDB?
客户可以使用 AWS Database Migration Service(DMS),轻松地将本地部署或 Amazon Elastic Compute Cloud(EC2)MongoDB 数据库迁移到 Amazon DocumentDB,并且几乎不会出现停机。借助 DMS,您可以从 MongoDB 副本集或从分片式集群迁移到 Amazon DocumentDB。此外,您还可以使用大多数现有工具将数据从 MongoDB 数据库迁移到 Amazon DocumentDB,包括 mongodump/mongorestore、mongoexport/mongoimport 以及通过操作日志为变更数据捕获(CDC)提供支持的第三方工具。有关更多信息,请参阅迁移到 Amazon DocumentDB。
我是否需要更改客户端驱动程序才能使用 Amazon DocumentDB?
不需要,Amazon DocumentDB 可以与大多数兼容 MongoDB 3.4+ 的 MongoDB 驱动程序配合使用。
Amazon DocumentDB 是否支持 ACID 事务?
是。发布了对 MongoDB 4.0 兼容性的支持后,Amazon DocumentDB 支持跨多个文档、语句、集合和数据库执行原子性、一致性、隔离性、持久性(ACID)事务处理。
Amazon DocumentDB 是否需要遵守 MongoDB 的生命周期终止(EOL)计划?
不需要,Amazon DocumentDB 不遵守相同的支持生命周期,因为 MongoDB 和 MongoDB 的 EOL 计划不适用于 Amazon DocumentDB。
如何访问我的 Amazon DocumentDB 集群?
Amazon DocumentDB 集群部署在客户的 Amazon VPC(VPC)中,并且可由部署在同一 VPC 中的 Amazon Elastic Compute Cloud(EC2)实例或其他 AWS 服务直接访问。此外,Amazon DocumentDB 还可供部署在同一区域或其他区域的不同 VPC 中的 Amazon EC2 实例或其他 AWS 服务通过 VPC 对等连接访问。您必须通过 Mongo Shell 或 MongoDB 驱动程序访问 Amazon DocumentDB 集群。Amazon DocumentDB 要求您在连接到集群时进行身份验证。有关其他选项,请参阅从 Amazon VPC 外部连接到 Amazon DocumentDB 集群。
为什么使用 Amazon DocumentDB 需要 Amazon RDS 权限和资源?
对于一些管理功能,例如实例生命周期管理、使用 Amazon Key Management Service(KMS)密钥加密静态数据和安全组管理,Amazon DocumentDB 利用了与 Amazon Relational Database Service(RDS)和 Amazon Neptune 共享的操作技术。使用 describe-db-instances 和 describe-db-clusters AWS CLI API 时,建议使用以下参数筛选 Amazon DocumentDB 资源:“--filter Name=engine,Values=docdb”。
Amazon DocumentDB 提供哪些实例类型?
请参阅 Amazon DocumentDB 定价页面,了解在每个区域可用的实例类型的最新信息。
怎样才能试用 Amazon DocumentDB?
要试用 Amazon DocumentDB,请参阅入门指南。
Amazon DocumentDB 是否有 SLA?
是的。有关更多信息,请参阅 Amazon DocumentDB(与 MongoDB 兼容)服务等级协议。
性能
Amazon DocumentDB 预计可以给我带来什么样的性能?
在写入存储时,Amazon DocumentDB 只保留预写式日志,不需要写入完整的缓冲区页面同步数据。这种优化不会影响持久性,因此 Amazon DocumentDB 的写入速度通常比传统数据库快。Amazon DocumentDB 集群可以横向扩展到每秒数百万次读取,最多可读取 15 个副本。
定价
Amazon DocumentDB 价格是多少,在哪个 AWS 区域提供 Amazon DocumentDB?
请参阅 Amazon DocumentDB 定价页面,了解有关区域和价格的最新信息。
Amazon DocumentDB 有免费套餐吗?可以免费开始使用吗?
可以。您现在可以免费试用 Amazon DocumentDB 1 个月。如果您之前没有使用过 Amazon DocumentDB,则符合免费试用一个月的条件。您的企业每月可免费享有 750 小时的 t3.medium 实例使用时间、3000 万次 IO、5GB 存储和 5GB 备份存储,为期 30 天。如果您的一个月免费试用到期或者您的使用时长超过免费限额,您可以关闭集群,从而避免产生任何费用,或者保留集群并按我们的标准按需费率支付费用。详情请参阅 DocumentDB 免费试用页面。
Elastic Clusters
什么是 Amazon DocumentDB Elastic Clusters?
借助 Amazon DocumentDB Elastic Clusters,能够弹性扩展文档数据库,处理数百万次写入和读取操作,存储容量为 PB 级。Elastic Clusters 可自动管理底层基础设施,且无需创建、删除、升级或扩展实例,从而简化了客户与 Amazon DocumentDB 的交互方式。
如何开始使用 Elastic Clusters?
您可以使用 Amazon DocumentDB API、SDK、CLI、CloudFormation(CFN)或 AWS 管理控制台创建 Elastic Clusters 集群。预置集群时,需要指定工作负载所需的分片数量和每个分片的计算量。创建集群后,便可以开始利用 Elastic Clusters 的弹性可扩展性了。现在,您可以连接到 Elastic Clusters 集群并从应用程序读取或写入数据。Elastic Clusters 具有弹性。根据工作负载的需要,可以通过使用 AWS 管理控制台、API、CLI 或 SDK 修改分片数量和/或每个分片的计算量来添加或删除计算。Elastic Clusters 将自动预置/取消预置底层基础设施,并重新平衡数据。
Elastic Clusters 如何运作?
Elastic Clusters 使用分片在 Amazon DocumentDB 的分布式存储系统中对数据进行分区。分片(也称为分区)可将大型数据集跨多个节点拆分为小型数据集,从而使客户能够超越单个数据库的垂直扩展限制横向扩展数据库。Elastic Clusters 利用 Amazon DocumentDB 中的计算与存储相分离的特性。Elastic Clusters 可以在分布式存储系统内高效地复制数据,而不是通过在计算节点之间移动小数据块来对集合重新分区。
Elastic Clusters 支持哪些类型的分片?
Elastic Clusters 支持基于哈希的分区。
Elastic Clusters 与 MongoDB 分片有何不同?
利用 Elastic Clusters,无论数据大小如何,都可以轻松地在 Amazon DocumentDB 上横向扩展或横向缩减工作负载,通常情况下,几乎没有应用程序停机或性能影响。MongoDB 上的类似操作会影响应用程序性能,且需要数小时,有时甚至数天。Elastic Clusters 还提供了差异化的管理功能,如无影响备份和快速时间点还原,使客户能够将更多的时间集中在应用程序上,而不是管理数据库上。
是否需要对应用程序进行任何更改才能使用 Elastic Clusters?
不需要。无需对应用程序进行任何更改即可使用 Elastic Clusters。
是否可以将现有 Amazon DocumentDB 集群转换为 Elastic Clusters 集群?
不可以,在近期内,您可以利用 AWS Database Migration Service (DMS) 将数据从现有的 Amazon DocumentDB 集群迁移到 Elastic Clusters 集群。
如何定义分片键?
为 Elastic Clusters 选择最佳分片键与其他数据库没有任何区别。好的分片键有两个特性 – 高频率和高基数。例如,如果应用程序将 user_orders 存储在 DocumentDB 中,那么通常必须按用户检索数据。因此,您希望与给定用户相关的所有订单都位于一个分片中。在这种情况下,user_id 将是一个很好的分片键。阅读更多信息。
Elastic Clusters 有哪些相关概念?
- Elastic Clusters:一种 Amazon DocumentDB 集群,可将工作负载的吞吐量扩展到每秒数百万次读取/写入,并将存储容量扩展到 PB 级。Elastic Clusters 集群由一个或多个用于计算的分片和一个存储卷组成,具有高可用性,默认情况下,可跨多个可用区使用。
- 分片:分片为 Elastic Clusters 集群提供计算。默认情况下,一个分片有三个节点,一个写入器节点和两个读取器节点。最多可以有 32 个分片,每个分片最多可以有 64 个 vCPU。
- 分片键:分片键是 JSON 文档中的一个可选字段,Elastic Clusters 使用它将读写流量分配给匹配的分片。建议您选择具有许多唯一值的键。好的分片键将在底层分片之间均匀地对数据进行分区,为工作负载提供最佳的吞吐量和性能。
- 分片集合:数据分布在 Elastic Clusters 集群中的集合。
Elastic Clusters 与其他 AWS 服务有何关系?
Elastic Clusters 与其他 AWS 服务的集成方式与目前的 DocumentDB 相同。首先,可以使用 AWS Database Migration Service(DMS)从 MongoDB 和其他关系数据库迁移到 Elastic Clusters。其次,可以使用 Amazon CloudWatch 监控 Elastic Clusters 集群的运行状况和性能。第三,可以通过 AWS IAM 用户和角色设置身份验证和授权,并使用 AWS VPC 建立只支持 VPC 的安全连接。最后,可以使用 AWS Glue 将数据导入到其他 AWS 服务(如 S3、Redshift 和 OpenSearch)以及从其他服务导出数据。
是否可以将现有的 MongoDB 分片工作负载迁移到 Elastic Clusters?
可以。可以将现有的 MongoDB 分片工作负载迁移到 Elastic Clusters。可以使用 AWS Database Migration Service 或原生 MongoDB 工具(如 mongodump 和 mongorestore)将 MongoDB 工作负载迁移到 Elastic Clusters。Elastic Clusters 还支持 MongoDB 的常用 API,如 shardCollection(),从而您能够灵活地在 Amazon DocumentDB 中重用现有的工具和脚本。
硬件、扩展和存储
Amazon DocumentDB 集群的最小存储限制和最大存储限制是什么?
最低存储为 10GB。根据您的集群使用情况,您的 Amazon DocumentDB 存储将以 10GB 的增量自动增长到 128 TiB,而不会影响性能。使用 Amazon DocumentDB Elastic Clusters,存储将以 10GB 的增量自动增长到 4PB。无论是哪种情况,都无需提前预置存储。
Amazon DocumentDB 如何扩展?
Amazon DocumentDB 在两个维度上扩展:存储和计算。在基于实例的集群中,Amazon DocumentDB 存储空间可自动从 10GB 扩展到 128TiB,而对于 Amazon DocumentDB Elastic Clusters,最多可扩展到 4PB。Amazon DocumentDB 的计算能力可以通过创建更大的实例来纵向扩展,也可以通过向集群中添加额外的副本实例来横向扩展(从而获得更大的读取吞吐量)。
如何扩展与我的 Amazon DocumentDB 集群相关联的计算资源?
在 AWS 管理控制台中,选择所需的实例并单击“修改”按钮,即可扩展分配至实例的计算资源。您可通过更改实例类来修改内存和 CPU 资源。
修改实例类时,在指定的维护时间将应用您请求的更改。或者,您可以使用“立即应用”标记来立即应用您的扩展请求。当您执行扩展操作时,这两种选项均会造成几分钟的可用性影响。请注意,任何其他待定的系统更改也将同时应用。
备份与还原
如何为我的集群启用备份?
Amazon DocumentDB 集群上始终都会启用自动备份。借助 Amazon DocumentDB 简单易用的数据库备份功能,您可以对集群进行时间点恢复。您最多可以将时间点还原的备份时间延长至 35 天。备份不影响数据库性能。
我是否能拍摄集群快照并根据需要长久保留?
是。您可以在过了备份时间保留手动快照,而且在拍摄快照时不会影响性能。请注意,从集群快照中还原数据需要创建一个新的集群。
如果我的实例发生故障,应该用什么恢复路径?
Amazon DocumentDB 跨三个可用区(AZ)自动维护六个数据副本,并将自动尝试在运行状况正常的可用区恢复您的实例,而不会造成数据丢失。如果您的数据在 Amazon DocumentDB 存储中可用,您可以从集群快照中进行还原或对新集群执行时间点还原操作。请注意,时间点还原操作的最迟可还原时间在过去最长可达 5 分钟。
如果删除集群,我的自动备份和集群快照会发生什么状况?
您可以选择在删除实例时创建最终快照。这样,您便可使用此快照稍后还原已删除的实例。在删除实例后,Amazon DocumentDB 会将这个用户创建的最终快照与所有其他手动创建的快照一起保留。删除实例后只会保留快照(即,为时间点还原创建的自动备份不会保留)。
如果删除账户,我的自动备份和集群快照会发生什么状况?
删除 AWS 账户将删除账户中包含的所有自动备份和快照备份。
我能够将快照共享给其他 AWS 账户?
是。借助 Amazon DocumentDB,您可以创建集群快照,以便日后用于还原集群。您可以与其他 AWS 账户共享快照,并且对方可以使用您的快照来还原包含您的数据的集群。您甚至还可以将您的快照公开,这样,任何人都能还原包含您的(公开)数据的集群。您可以使用此功能在拥有不同 AWS 账户的各种环境(生产、开发/测试、暂存等)之间共享数据,也可以将所有数据的备份安全保存到一个单独的账户中,以防主 AWS 账户受到安全威胁。
我是否需要支付共享快照的费用吗?
在账户之间共享快照不需要付费。但是,您需要为快照本身以及通过共享快照还原的任何集群付费。
我能否自动共享快照?
我们不支持共享自动集群快照。要共享快照,您必须手动创建一个快照,然后共享该快照。
我能否在不同区域之间共享 Amazon DocumentDB 快照?
不能。只有与共享快照的账户位于同一区域的账户才能访问您的共享 Amazon DocumentDB 快照。
我能否共享加密的 Amazon DocumentDB 快照?
是。您可以共享加密的 Amazon DocumentDB 快照。共享快照的接收者必须能够访问用于加密快照的 KMS 密钥。
我能否在 Amazon DocumentDB 服务之外使用 Amazon DocumentDB 快照?
不能。Amazon DocumentDB 快照只能在该服务内部使用。
如果删除集群,我的备份会发生什么状况?
您可以选择在删除集群时创建最终快照。这样,您便可使用此快照稍后还原已删除的集群。在删除集群后,Amazon DocumentDB 会将这个用户创建的最终快照与所有其他手动创建的快照一起保留。
高可用性和复制
Amazon DocumentDB 如何提高我的集群对磁盘故障的容错能力?
Amazon DocumentDB 会将您的存储卷分成分散在多个磁盘上的 10 GB 分段。存储卷的每个 10GB 组块都能跨三个可用区(AZ)以六种方法进行复制。Amazon DocumentDB 的设计能以透明方式应对多达两个数据副本丢失的情况,而不会影响写入可用性,还能在不影响读取可用性的情况下应对多达三个副本丢失的情况。Amazon DocumentDB 的存储卷还具有自我修复能力,可连续扫描数据块和磁盘有无出错并自动修复之。
Amazon DocumentDB 如何缩短数据库崩溃后的恢复时间?
与其他数据库不同的是,Amazon DocumentDB 在数据库崩溃之后不需要重放最后一个数据库检查点(通常为五分钟)的重做日志,且不需要在数据库可用于操作之前确认所有更改都已应用。在大多数情况下,这会将数据库的重启时间缩短到 60 秒以下。Amazon DocumentDB 会将缓存移出数据库进程,并在重启时使其立即可用。这将防止您限制访问,直到重新填充缓存以避免停止。
Amazon DocumentDB 支持哪些类型的副本?
Amazon DocumentDB 支持只读副本,这些副本与主实例共享相同的底层存储卷。主实例作出的更新对所有的 Amazon DocumentDB 副本可见。
功能:Amazon DocumentDB 只读副本
副本数量:最多 15 个
复制类型:异步(通常需要数毫秒)
对主实例的性能影响:低
充当故障转移目标:是(无数据丢失)
自动故障转移:是
我能否拥有 Amazon DocumentDB 跨区域副本?
能,您可以使用全局集群功能跨区域复制数据。全局集群跨越多个 AWS 区域。全局集群将您的数据复制到最多五个区域的集群中,对性能几乎没有影响。全局集群提供在发生区域级故障时进行灾难恢复的能力,并支持低延迟全局读取。要了解详情,请参阅我们的博客文章。
我是否能将特定副本指定为优先失效转移目标?
是。您可以为集群中的每个实例指定一个提升优先级分层。如果主实例发生故障,Amazon DocumentDB 会将优先级最高的副本提升为主实例。如果同一优先级分层中的两个或更多副本出现不一致,Amazon DocumentDB 将提升大小与主实例相同的副本。
我能否在实例创建完成后再修改优先级分层?
您随时可以修改实例的优先级分层。单纯地修改优先级分层并不会触发失效转移。
我能否阻止特定副本被提升为主实例?
如果您不希望副本被提升为主实例,则可为其指定较低的优先级分层。不过,如果集群上优先级较高的副本因为某些原因无法运行或使用,那么 Amazon DocumentDB 将提升优先级较低的副本。
Amazon DocumentDB 如何确保集群的高可用性?
Amazon DocumentDB 可以通过将多个 AWS 可用区中的副本实例用作故障转移目标来采用高可用性配置进行部署。如果主实例发生故障,副本实例将在尽可能不中断服务的情况下被自动提升为新的主实例。
如何提高单个 Amazon DocumentDB 实例的可用性?
您可以添加额外的 Amazon DocumentDB 副本。Amazon DocumentDB 副本与主实例共享同一个底层存储。任何 Amazon DocumentDB 副本都能在不丢失任何数据的情况下被提升为主实例,因此可以用于在主实例发生故障时提高容错能力。要提高集群可用性,只需在多个可用区中创建 1 到 15 个副本,且 Amazon DocumentDB 会在实例发生故障时自动将其纳入故障转移主选择中。
失效转移时会发生什么状况?这种情况会持续多长时间?
Amazon DocumentDB 会自动处理失效转移,以便您的应用程序可以尽快恢复数据库操作,而无需人工管理干预。
- 如果您在相同或不同的可用区中有 Amazon DocumentDB 副本实例,当进行故障转移时,Amazon DocumentDB 会翻转您的实例的规范名称记录(CNAME)以指向运行状态正常的副本;相应地,此副本会晋升为新的主实例。从开始到结束,故障转移通常会在 30 秒内完成。
- 如果您没有 Amazon DocumentDB 副本实例(即单个实例集群),Amazon DocumentDB 将尝试在与原实例相同的可用区中创建新实例。原实例会尽量替换,但可能不会成功,例如出现全面影响该可用区的问题时。
您的应用程序应会在连接丢失时重试数据库连接。
如果我的主实例和 Amazon DocumentDB 副本实例积极获取读取流量且发生故障转移,会发生什么状况?
Amazon DocumentDB 将自动检测您的主实例发生的问题,并开始将您的读取/写入流量路由到 Amazon DocumentDB 副本实例。平均来说,此故障转移将在 30 秒内完成。此外,您的 Amazon DocumentDB 副本实例提供的读取流量将短暂中断。
我的副本将落后主实例多久?
Amazon DocumentDB 副本与主实例共享同一个数据卷,因此几乎没有复制滞后。据我们观察,滞后时间一般在 10 毫秒内。
安全性与合规性
我能否在 Amazon Virtual Private Cloud(Amazon VPC)中使用 Amazon DocumentDB?
是。所有 Amazon DocumentDB 集群都必须在 VPC 中创建。借助 Amazon VPC,您可以定义一个与自己数据中心内运行的传统网络非常相似的虚拟网络拓扑。这样一来,您便可完全控制谁能访问您的 Amazon DocumentDB 集群。
Amazon DocumentDB 是否支持基于角色的访问控制(RBAC)?
Amazon DocumentDB 通过内置角色支持 RBAC。RBAC 可以限制用户有权执行的操作,使您可以将最低权限作为最佳实践执行。有关更多信息,请参阅 Amazon DocumentDB 基于角色的访问控制。
现有 MongoDB 身份验证模式如何与 Amazon DocumentDB 配合使用?
Amazon DocumentDB 利用了 VPC 严格的网络和授权边界。Amazon DocumentDB 管理 API 的身份验证和授权由 IAM 用户、角色和策略提供。对 Amazon DocumentDB 数据库的身份验证是使用 Salted Challenge Response Authentication Mechanism(SCRAM)通过标准的 MongoDB 工具和驱动程序完成的,这是 MongoDB 的默认身份验证机制。
Amazon DocumentDB 是否支持加密静态数据?
是。Amazon DocumentDB 支持您使用通过 AWS Key Management Service(KMS)管理的密钥来加密集群。在通过 Amazon DocumentDB 加密运行的集群实例上,静态存储于底层存储的数据都经过加密,同一集群的自动备份、快照和副本也是如此。加密和解密操作的处理都是无缝的。有关将 KMS 与 Amazon DocumentDB 配合使用的更多信息,请参阅加密静态 Amazon DocumentDB 数据。
我能否加密现有的未加密集群?
目前不支持加密现有的未加密 Amazon DocumentDB 集群。要将 Amazon DocumentDB 加密用于现有的未加密集群,请在启用加密的情况下创建新集群,并将您的数据迁移到该集群中。
Amazon DocumentDB 支持哪些合规性认证?
Amazon DocumentDB 旨在满足最高安全标准,并方便您验证我们的安全性以及履行您自己的法规和合规义务。Amazon DocumentDB 经评估符合 PCI DSS、ISO 9001、27001、27017 和 27018、SOC 1、2 和 3 以及健康信息信任联盟(HITRUST)共同安全框架(CSF)认证,并且符合 HIPAA 要求。您可在 AWS Artifact 中下载 AWS 合规报告。