Amazon Aurora

实现 MySQL 最高 5 倍、PostgreSQL 最高 3 倍吞吐量的 AWS 自研云原生关系型数据库

概述

Amazon Aurora 是 AWS 从零开始为云设计的关系型数据库引擎。与 MySQL 和 PostgreSQL 兼容,现有的应用程序代码和工具几乎可以直接使用。存储自动复制到跨 3 个可用区的 6 个副本,最大可自动扩展至 128 TB。使用 Aurora Serverless v2 时,数据库容量会根据工作负载自动扩展,最小化空闲时的成本。只读副本最多可创建 15 个,故障转移时间通常在 30 秒以内。使用 Aurora Global Database 可以将数据以不到 1 秒的延迟复制到最多 5 个区域,也支持区域故障时的故障转移。

计算与存储分离架构

Aurora 高性能的根基在于计算与存储分离的独特设计。传统 RDS 中存储直接挂载到实例上,而 Aurora 的存储层作为独立的分布式系统运行。数据被分割为 10 GB 的段,以跨 3 个 AZ 的 6 个副本形式保存。写入在 6 个副本中有 4 个成功即判定完成 (4/6 仲裁),读取在 3 个副本响应即判定完成 (3/6 仲裁),因此即使同时丢失 2 个副本也能读取数据。检测到故障的段会自动重建。Azure SQL Database Hyperscale 也采用了计算与存储分离的设计,但 Aurora 支持 MySQL 和 PostgreSQL 两种引擎,选择面更广,故障转移时间通常在 30 秒以内也更快速。

Serverless v2 与只读副本的使用区分

Aurora Serverless v2 可将容量从 0.5 ACU (约 1 GB 内存) 自动扩展到 128 ACU,最适合流量波动大的工作负载。夜间和非高峰时段会缩减到最小 ACU,与预置实例相比可大幅降低空闲时的成本。另一方面,读取负载高时添加只读副本更有效,最多可创建 15 个。只读副本也可作为故障转移目标,主实例故障时会自动提升。数据库运维专业书籍 (Amazon) 中详细介绍了 Serverless 与预置实例的判断标准。

回溯与 Global Database 的恢复策略

启用 Aurora MySQL 兼容的回溯 (Backtrack) 功能后,可以在数秒内将数据库回退到最多 72 小时前的任意时间点。对于误执行 DELETE 语句或部署后数据不一致等人为失误的恢复,比从快照恢复要快得多。对于区域故障的防备,Aurora Global Database 非常有效,可以将数据以不到 1 秒的延迟复制到最多 5 个次要区域。跨区域故障转移通常在 1 分钟内完成,RPO (恢复点目标) 不到 1 秒。在成本方面,使用预留实例 1 年全额预付可节省约 40%。通过 Performance Insights 可视化查询性能,持续进行慢查询识别和索引优化,可以防止实例规格的过度扩展。

共有するXB!