信用帖子https://aws.amazon.com/blogs/database/is-amazon-rds-for-postgresql-or-amazon-aurora-postgresql-a-better-choice-for-me

Amazon RDS for PostgreSQL 和 Amazon Aurora PostgreSQL 都是为现代应用程序运行数据库工作负载的不错选择。

这篇文章将回答你们中许多人想知道的问题。在 Amazon RDS for PostgreSQL 和 Amazon Aurora PostgreSQL 之间选择什么?

在查看差异之前让我们仔细看看 Amazon RDS for PostgreSQL 和 Aurora PostgreSQL。

Amazon RDS for PostgreSQLAurora PostgreSQL 是完全托管的开源 PostgreSQL 数据库,提供易于创建、管理、高可用性、只读/报告工作负载的可扩展性、存储中的自动扩展

Amazon RDS for PostgreSQL 支持高达 64 TiB 的存储,并使用 Amazon Elastic Block Store (Amazon EBS) 卷进行数据库和日志文件存储。

Amazon Aurora PostgreSQL 是 AWS 开发的云原生数据库,重新设计了数据库引擎和存储,并添加了额外的功能,例如将存储扩展到 128 TiB,提高性能以支持吞吐量。

[图像描述](https://res.cloudinary.com/practicaldev/image/fetch/s--w_4F6y2D--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to- uploads.s3.amazonaws.com/uploads/articles/oq4djkw008jkxagveham.png)

RDS PostgreSQL 将在 AZ1 有一个主数据库,如果部署选择为多可用区,则会在 AZ2 中创建一个 RDS PostgreSQL 辅助数据库。

Amazon Aurora PostgreSQL 作为数据库实例,Writer 和 Reader 共享同一个存储,最多 6 个数据副本分布在 3 个 AZ 中。

分为7个方面如下

1.可扩展性

2.崩溃恢复

3.故障转移

4.存储

5.高可用与容灾

6.备份

7.PostgreSQL 版本

8.附加功能

9.结论

可扩展性

Amazon RDS 可以减少读取任务,例如发布报告、使用只读副本功能查询数据,该功能创建一个副本数据库实例来支持读取任务。

Amazon RDS 最多支持创建 5 个只读副本。当预写日志 (WAL) 文件中的主数据库中的数据发生更改时,它会以异步模式发送到只读副本。

Aurora PostgreSQL 最多支持创建 15 个只读副本。与 Amazon RDS for PostgreSQL 的不同之处在于 Aurora 使用所有共享存储。主数据库和只读副本中的数据始终同步。仅对于内存,延迟时间为以毫秒为单位,或者在主数据库具有高工作负载活动的某些情况下,延迟时间可能为 30 秒。

结论可扩展性

如果业务要求需要较低的复制延迟时间或需要超过 5 个只读副本,则 Aurora PostgreSQL 是更好的选择,但如果复制延迟时间可以是秒或分钟,或者只读副本 5 个副本就足够了,Amazon RDS for PostgreSQL 会是一个不错的选择。

崩溃恢复

当数据库崩溃并需要崩溃恢复时,Amazon RDS for PostgreSQL 会重播在最后一个检查点之后发生的事务日志,其中检查点会刷新内存中数据库块的更改数据和预写日志 (WAL)。

默认情况下,检查点每 5 分钟出现一次,如果检查点频繁出现,将加速崩溃恢复。

Aurora PostgreSQL 不会在数据库节点中执行检查点过程,因为它是在存储系统中完成的,其中数据库节点中更改的日志记录被写入存储节点中的数据库页面,并且 Aurora 崩溃恢复是异步的、分布式的。并行线程,可以在崩溃恢复后快速启动数据库。

崩溃恢复结论

如果业务需求需要快速的崩溃恢复,Aurora PostgreSQL 是更好的选择,但如果崩溃恢复不是关键因素,Amazon RDS for PostgreSQL 是一个可行的选择。

故障转移

Amazon RDS for PostgreSQL 多可用区部署支持自动故障转移,无需对连接数据库的数据库终端节点进行应用程序更改,通常需要 60-120 秒才能完成故障转移。

Aurora PostgreSQL 需要大约 30 秒的典型故障转移时间,其中包括大约 15-20 秒的检测故障以确认节点故障、10-15 秒的 DNS 传播和大约 3-10 秒的恢复时间

故障转移结论

如果应用程序需要更少的故障转移时间,那么 Aurora 是更好的选择,但如果应用程序接受超过 60 秒的故障转移时间,那么 Amazon RDS for PostgreSQL 是正确的选择。

存储

Amazon RDS for PostgreSQL 使用 Amazon EBS 作为存储。使用通用 SSD 和预置 IOPS 等可选类型,通用 SSD 的基准为每预置 GB 3 IOPS,并且每预置 GB 最多可突增 3,000 IOPS,基准 IOPS 限制为 16,000 IOPS。

预置 IOPS SSD 提供 1000 - 80,000 IOPS IOPS。

Amazon RDS for PostgreSQL 支持 Storage Auto Scaling,它可以一次将存储扩展 5 GiB,或分配存储的 10%。

Aurora PostgreSQL 将使用使用 SSD 的虚拟集群卷,Aurora Storage 支持 Auto Scaling 和以 10 GiB 为增量的存储和高达 128 TiB 的存储。

数据将分布复制到所有 3 个可用区,从而提供高可用性和持久性的好处。

虽然没有基于存储大小的 IOPS 虚拟限制,但它可以扩展实例以支持需要更高 IOPS 的工作负载。

下图是 Aurora PostgreSQL 存储架构。

[图像描述](https://res.cloudinary.com/practicaldev/image/fetch/s--4tuYwhIL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to- uploads.s3.amazonaws.com/uploads/articles/y9pw42qby3qkmisfurwz.png)

存储结论

如果数据库工作负载需要超过 80,000 IOPS,Aurora PostgreSQL 是正确的选择。但是,如果您想要低于 80,000 IOPS,您可以选择 Amazon RDS for PostgreSQL 或 Aurora PostgreSQL。

高可用和容灾

Amazon RDS for PostgreSQL 使用多可用区部署、只读副本和快照共享功能支持高可用性和灾难恢复 (DR)。多可用区将数据作为镜像复制到位于不同 AZ 的辅助或备用实例。在同步模式下,Amazon RDS for PostgreSQL 支持同地域和不同地域(跨地域)的只读副本。

您还可以将 Amazon RDS 快照复制并共享到不同的 AWS 账户或区域以用于灾难恢复。

Aurora PostgreSQL 支持多可用区部署,跨3个可用区的集群卷中的6个存储节点发送数据,在存储级别同步模式下,一旦出现问题,可以立即将Aurora副本提升为主实例。

Amazon Aurora Global Database 还有一个功能,可以使用该功能进行跨区域复制。 AWS 中的基础设施,可在不到 1 秒的时间内减少复制延迟。

还可以将 Aurora 集群快照复制并共享到不同的 AWS 账户或区域以用于灾难恢复。

关于高可用性和灾难恢复的结论

如果高可用性要求需要多可用区,可以接受跨区域复制延迟时间,Amazon RDS for PostgreSQL 将完成这项工作,但如果需要设计高可用性和 DR 解决方案来减少恢复点目标 (RPO) 和恢复时间目标 (RTO) Aurora PostgreSQL 将是正确的选择。

备份

Amazon RDS 可以启用备份,如果 RDS 创建为单个 AZ 部署并且 Amazon RDS 还将备份事务日志 (WAL),则在备份期间可能会对性能产生轻微影响,以防 PITR(时间点恢复) 首先恢复完整备份并重播 WAL,直到需要恢复时间,如果 RDS for PostgreSQL 具有写入密集型工作负载,则重播事务日志可能需要更长的时间。

Aurora PostgreSQL 将备份集群卷并保留指定时间段,在 PITR 的情况下,将从备份创建数据库集群的新副本,从而缩短 PITR 恢复时间。

备份结论

如果要求降低 RPO、RTO,并且如果工作负载对备份期间的性能下降很敏感,Aurora PostgreSQL 是更好的选择,但如果性能下降不是关键因素,Amazon RDS for PostgreSQL 将能够回答可以调整备份间隔以避免高峰时段的性能影响,或者使用多可用区部署从备用实例提供备份。

PostgreSQL版本

在更新版本以跟上 PostgreSQL 时,Amazon RDS for PostgreSQL 将比 Aurora PostgreSQL 更快地更新版本,因为它是一个 PostgreSQL 数据库引擎。

关于 PostgreSQL 版本的结论

如果应用程序需要更新的 PostgreSQL 版本以及更新的版本以跟上新的 PostgreSQL 版本,Amazon RDS for PostgreSQL 是更好的选择。

附加功能

AWS 开发了额外的功能来提高 Aurora PostgreSQL 的响应速度,例如快速数据库克隆、查询计划管理、集群缓存管理、无服务器和全局数据库。

至于数据库克隆,在集群中克隆数据库比在 RDS for PostgreSQL 中从快照中恢复数据库要快。

查询计划管理使 Aurora PostgreSQL 能够有效控制查询计划更改。

集群缓存管理提高了故障转移后新写入器实例的性能,因为写入器实例和需要提升的只读副本之间存在复制缓存。在故障转移后的 Amazon RDS for PostgreSQL 中,数据库缓冲区。它必须从头开始创建,因为数据库必须先从磁盘读取数据并影响性能。

Aurora Serverless是一个可以根据应用需要启动、扩展和关闭的数据库集群,适用于没有明确使用模式的应用。

Aurora 全球数据库是一个多区域分布式Aurora 数据库,可以在每个区域进行快速读取操作,将延迟降低到1 秒以下。Amazon RDS for PostgreSQL 支持跨区域复制,但复制滞后较大。

这些功能可以支持广泛的应用程序要求,还可以提高性能。

结论

Amazon RDS for PostgreSQL 是中小型工作负载的理想选择。但是,如果您想要更多有助于提高附加功能的性能和可用性的功能,可以考虑使用 Aurora PostgreSQL。

有关如何从 Amazon RDS for PostgreSQL 或 Aurora PostgreSQL 迁移的更多信息,您可以在下面了解更多详细信息。

  • 将本地 PostgreSQL 数据库迁移到 Amazon RDS for PostgreSQL

  • 将数据迁移到兼容 PostgreSQL 的 Amazon Aurora

希望这篇文章对各位读者有所帮助。作为在 Amazon RDS for PostgreSQL 和 Amazon Aurora PostgreSQL 之间进行选择的指南。

Logo

PostgreSQL社区为您提供最前沿的新闻资讯和知识内容

更多推荐