关系型数据库 - 利用 Amazon RDS 与 Aurora 实现的高可用性数据库

讲解利用 Amazon RDS 与 Aurora 构建关系型数据库的方法。

托管关系型数据库的价值

关系型数据库是企业核心系统的中枢,在事务处理、数据一致性、复杂查询处理方面不可或缺。Amazon RDS 是全托管的关系型数据库服务,支持 IBM Db2、MariaDB、Microsoft SQL Server、MySQL、Oracle Database、PostgreSQL 这 6 种引擎(截至 2026 年 8 月官方文档记载的引擎)。在本地环境运维数据库时,会产生硬件采购、OS 安装、DB 引擎设置、补丁应用、备份、复制配置等大量运维任务,这些例行工作占用了数据库负责人的大量时间。RDS 由 AWS 管理这些运维任务,DBA 可以专注于 Schema 设计和查询优化等高附加值的工作。自动备份的保留期最长为 35 天,并且可以以 5 分钟的间隔恢复到任意时间点(PITR)。

Amazon Aurora 的创新架构

Amazon Aurora 是 AWS 自主开发的云原生关系型数据库,实现最高达 MySQL 5 倍、PostgreSQL 3 倍的吞吐量。Aurora 的存储会自动复制为跨 3 个可用区的 6 个副本,并根据引擎版本自动扩展到最大 256 TiB 或 128 TiB(截至 2026 年 10 月)。凭借这种分布式存储架构,无需预先预置存储,只按使用量计费。Aurora 支持最多 15 个只读副本,由于只读副本与主实例共享相同的分布式存储,复制的延迟可以控制得极小。实际的延迟可以通过 CloudWatch 的 AuroraReplicaLag 指标进行监控。故障转移在 30 秒以内完成,使应用程序的可用性最大化。以下是创建 RDS for PostgreSQL 实例的 CLI 命令示例。 aws rds create-db-instance \ --db-instance-identifier my-postgres-db \ --db-instance-class db.r6g.large \ --engine postgres \ --master-username admin \ --master-user-password MySecurePassword123 \ --allocated-storage 100 \ --multi-az \ --storage-encrypted 另外,如果省略 --engine-version,会选择该引擎的默认版本。可指定的版本可以通过 aws rds describe-db-engine-versions 确认。

基于 Aurora Serverless 的无服务器数据库

Aurora Serverless(旧称 Aurora Serverless v2)是根据工作负载需求自动扩展数据库容量的无服务器选项。其扩展范围的最小值为 0.5 ACU(Aurora Capacity Unit)。最大值为 256 ACU(截至 2026 年 10 月,在 Aurora PostgreSQL 支持的引擎版本中为 384 ACU)。在此范围内以 0.5 ACU 为单位进行细粒度扩展,即时适应需求的变化。将最小容量设置为 0 ACU 时,持续空闲一定时间的集群会自动暂停,并在下一次访问时恢复(暂停前的等待时间默认为 300 秒,可以在 300 秒到 86,400 秒的范围内设置)。在开发环境和测试环境中,会将空闲时的成本降到最低,同时在负载测试时自动扩容。Aurora Serverless 可以与预置实例在同一集群中混合使用,也可以采用将读取工作负载分散到无服务器只读副本的混合配置。在本地环境的数据库中,需要让按峰值配置的硬件始终运行,即使在闲时也会持续产生相同的费用。Aurora Serverless 按使用的 ACU 秒计费,使资源的浪费最小化。

全球部署与灾难恢复

Aurora Global Database 可以构建跨 1 个主区域和最多 10 个次要区域的全球数据库集群(截至 2026 年 8 月官方文档记载的值)。次要 DB 集群数与主集群的只读副本数合计有 15 的上限,将次要集群扩展到 10 个区域时,主集群的只读副本最多为 5 个。到次要区域的复制延迟通常低于 1 秒,区域故障时的故障转移在 1 分钟以内完成。由此可以实现 RPO(恢复点目标)低于 1 秒、RTO(恢复时间目标)低于 1 分钟的灾难恢复。RDS 的多可用区部署会在主实例发生故障时自动故障转移到备用实例,使应用程序的停机时间最小化。RDS Proxy 负责数据库连接的池化和管理,高效处理来自 Lambda 等无服务器应用程序的大量短时连接。要在本地环境构建同等的灾难恢复,需要与异地数据中心的专线连接、引入复制软件、完善故障转移步骤,这需要相应的初始投资和持续的运维保障。

RDS 与 Aurora 的价格

价格为截至 2026 年 8 月 / 弗吉尼亚北部和东京 2 个区域的按需单价。RDS for PostgreSQL 的 db.r6g.large(单可用区)每小时 0.225 美元(弗吉尼亚北部)、0.270 美元(东京)。Aurora PostgreSQL 的相同实例类在标准配置下每小时 0.26 美元(弗吉尼亚北部)、0.313 美元(东京)。存储方面,RDS 的 gp3(单可用区)每 GB 每月 0.115 美元(弗吉尼亚北部)、0.138 美元(东京)。Aurora 的标准配置为每 GB 每月 0.10 美元(弗吉尼亚北部)、0.12 美元(东京)。Aurora Serverless 按 ACU(Aurora Capacity Unit)使用量计费,每 ACU 小时 0.12 美元(弗吉尼亚北部)、0.15 美元(东京)。如果想避免 I/O 计费的波动,可以选择 I/O-Optimized 配置,此时实例和存储的单价会上升,但取而代之的是不再有 I/O 请求计费。如果以长期使用为前提,可以通过预留实例(1 年 / 3 年)降低单价。折扣率因合同期限和预付方式而异,因此实际的估算请在官方价格表中确认。

总结 - 关系型数据库的最佳选择

Amazon RDS 与 Aurora 是从根本上变革关系型数据库运维的服务。可以在大幅减轻 DBA 运维负担的同时,确保企业级的可用性和耐久性。在需要 MySQL/PostgreSQL 兼容且需要高性能时选择 Aurora,在需要与现有引擎完全兼容时选择 RDS。

参考资料(AWS 官方)

本页的第一手信息来源是 AWS 官方网站及官方文档。最新的规格与价格请以下列官方页面为准。

如本页内容与官方文档不一致,请以官方文档为准。

分享