深入了解 Amazon Aurora 与 Amazon RDS for PostgreSQL 的架构与特性

发布: (2025年12月12日 GMT+8 20:49)
9 min read
原文: Dev.to

Source: Dev.to

引言

如果您正在考虑将自托管的 PostgreSQL 数据库迁移,或将商业数据库转向在 AWS 上运行的 PostgreSQL,则需要选择最符合您需求的数据库服务。AWS 提供了两种托管的 PostgreSQL 数据库选项:

  • Amazon Aurora PostgreSQL 兼容版
  • Amazon Relational Database Service(Amazon RDS) for PostgreSQL

本文深入探讨 Aurora PostgreSQL 与 RDS PostgreSQL 的架构与特性,分析它们的性能、可扩展性、故障转移能力、存储选项、高可用性以及灾难恢复机制。

概览

Aurora PostgreSQL 与 RDS for PostgreSQL 都是全托管的 PostgreSQL 数据库服务,提供:

  • 各种规格的 DB 实例供选择
  • 多个兼容 PostgreSQL 的版本
  • 备份与时间点恢复(PITR)管理
  • 复制与监控
  • 多可用区(Multi‑AZ)支持
  • 存储自动扩容

关键区别

Aurora PostgreSQL 使用为高速分布式存储定制的高性能存储子系统。底层存储会自动以 10 GiB 为单位增长,最大可达 128 TiB。Aurora 在大吞吐量和高度并发工作负载下对 PostgreSQL 进行了优化。

RDS for PostgreSQL 支持最高 64 TiB 的存储,并使用 Amazon Elastic Block Store(Amazon EBS)卷来存放数据库和日志。RDS 负责 PostgreSQL 的安装、升级、存储管理、复制和备份。

架构对比

Aurora PostgreSQL 架构

  • 单一虚拟集群卷,由使用本地 SSD 的存储节点支持
  • 数据自动跨三个可用区复制
  • 写入实例与只读实例共享同一存储模型

RDS PostgreSQL 架构

  • 传统 Multi‑AZ,配有单个备用实例
  • Multi‑AZ DB 集群,包含两个可读的备用 DB 实例(半同步)
  • 为提升读取容量,跨三个独立可用区部署

功能对比表

功能Aurora PostgreSQLRDS for PostgreSQL
最大存储128 TiB64 TiB
存储类型定制分布式存储(本地 SSD)Amazon EBS(gp2/gp3、io1/io2)
存储增长自动以 10 GiB 增量扩容自动以 10 GiB 或 10 % 块扩容
存储缩减删除数据后自动缩减手动
IOPS 限制无基于存储大小的限制取决于存储类型和大小
I/O 费用分离计费(可选 I/O‑Optimized)包含在存储费用中
只读副本最多 15 个 Aurora 只读实例最多 155 个只读副本(每实例 5 个,三级级联)
跨区域副本Aurora Global Database5 个跨区域只读副本
典型副本延迟几百毫秒几秒(最佳)至数分钟(高负载)
备份类型持续增量备份每日全备 + 持续 WAL 归档
备份性能影响单 AZ 部署略有影响
PITR 恢复时间快(增量特性)较慢(全备恢复 + 重放 WAL)
故障转移时间(Multi‑AZ)30 秒(DNS:10‑15 s,恢复:3‑10 s)1‑2 分钟(含崩溃恢复)
崩溃恢复立即(按需并行重放)取决于检查点间隔(默认 5 分钟)
Multi‑AZ 选项单一配置一个备用或两个可读备用
写入延迟(Multi‑AZ)标准两个备用时最高可快 2 倍
复制方式共享存储PostgreSQL 流复制
写入对副本的影响可忽略不计显著(处理事务日志)
数据复制6 份副本跨 3 AZ同步复制到备用,异步复制到副本
无服务器选项Aurora Serverless v2不可用
快速数据库克隆支持不支持(仅快照恢复)
查询计划管理支持(QPM)不可用
集群缓存管理支持(热缓存故障转移)不可用
机器学习集成支持(原生 SQL)不可用

详细功能分析

存储

Aurora PostgreSQL 存储

  • 单一虚拟集群卷,由使用本地 SSD 的存储节点支持
  • 自动以 10 GiB 为增量增长,最高 128 TiB
  • 删除数据后动态缩减
  • 自动在三个可用区实现三重复制
  • 无基于存储大小的 IOPS 限制(可能需要扩容 DB 实例)
  • 按使用量单独计收 I/O 费用
  • I/O‑Optimized 配置在 I/O 开支超过 Aurora 数据库开支的 25 % 时可节省约 40 % 成本

RDS for PostgreSQL 存储

  • Amazon EBS SSD 类型:
    • 通用型 SSD(gp2): 每 GiB 提供 3 IOPS,突发上限 3,000 IOPS
    • 通用型 SSD(gp3): 性能独立于容量——容量 <400 GiB 时基准 3,000 IOPS 与 125 MiB/s
    • 预置 IOPS(io1、io2): 1,000–256,000 IOPS 范围
  • 自动扩容以 10 GiB 或当前存储的 10 % 为块(取较大者)

备份

Aurora PostgreSQL 备份

  • 持续增量自动备份
  • 备份期间无性能影响或中断
  • 由于增量特性,PITR 恢复快速
  • 恢复时间取决于卷大小和事务日志数量

RDS for PostgreSQL 备份

  • 在定义的备份窗口内每日自动备份
  • 单 AZ 部署在备份启动时会有轻微性能影响
  • 持续 WAL 归档
  • PITR 过程:先恢复全备,再重放 WAL 到目标时间点
  • 对写密集型工作负载恢复较慢(WAL 重放时间长)
  • 技巧: 频繁手动快照可缩短 PITR 所需时间

可扩展性

Aurora PostgreSQL 可扩展性

  • 最多 15 个只读实例用于读扩展和高可用性
  • 共享存储模型使高写入工作负载对复制影响最小
  • 副本延迟极低(几百毫秒,偶尔最高 60 秒)
  • 当延迟超过阈值时自动重启只读实例
  • 写入容量受单写实例限制

RDS for PostgreSQL 可扩展性

  • 最多 155 个只读副本(每实例 5 个,三级级联)
  • 级联架构降低源实例的负载
  • 随着级联层数增加,副本延迟逐步上升
  • 只读副本可提升为独立实例
  • 提供 5 个跨区域只读副本
  • 通过 PostgreSQL WAL 记录实现流复制
  • 在高写入或存储/实例规格不匹配时,副本延迟风险增大
  • Multi‑AZ 三 AZ 部署中的两个可读备用既提供 HA,又提升读扩展能力

崩溃恢复

Aurora PostgreSQL

  • 没有传统检查点;存储系统直接应用日志记录
  • 对每个存储段并行、异步重放 redo 记录
  • 崩溃后立即可用

RDS for PostgreSQL

  • 从最近的检查点(默认 5 分钟)开始重放事务日志
  • 检查点过程将内存中脏页写入存储
  • 权衡:更频繁的检查点可缩短恢复时间,但会增加 I/O 负载

故障转移

Aurora PostgreSQL 故障转移

  • 典型故障转移时间约 30 秒
    • DNS 传播:10‑15 秒
    • 恢复:3‑10 秒(与 DNS 并行)
  • 自动将只读实例提升为主实例

RDS for PostgreSQL 故障转移

  • 典型故障转移时间 1‑2 分钟(包括 DNS 传播和崩溃恢复)
  • 受崩溃恢复时长、DNS 传播和 TTL 设置影响
  • 使用两台备用的 Multi‑AZ 部署可在 35 秒内完成故障转移,并实现最高 2 倍的事务提交延迟提升

RDS Proxy 的优势

两项服务均支持 Amazon RDS Proxy,可实现:

  • 连接池化与共享
  • 更快的故障转移恢复
  • 自动连接到新的主实例
  • 故障转移期间保持空闲连接

高可用性与灾难恢复

(原文在此之后仍有内容;如需继续翻译后续章节,请在原文中提供相应部分。)

Back to Blog

相关文章

阅读更多 »