跳至主要内容

Amazon Aurora:是什么、如何运作,以及如何开始使用

本实用指南将带您完成 Amazon Aurora 的搭建、管理与优化,并提供有关性能调优、安全与成本管理的见解。
· 15分钟 阅读

使用 AI 探索

在多家公司使用 Amazon Aurora 已有一段时间后,我切身感受到它作为全托管关系型数据库引擎在高性能、可扩展性和可靠性方面的出色表现。

作为支持 MySQL 和 PostgreSQL 的云原生解决方案,Aurora 非常适合需要高可用性与自动伸缩的企业。由于 AWS 会自动管理备份、故障转移和复制,使用 Aurora 能在提升数据库效率的同时降低维护成本。

在本教程中,我将带您完成 Aurora 实例的搭建、有效管理、性能优化,以及确保安全与成本效益。

什么是 AWS Aurora?

Amazon Aurora 是一款云端关系型数据库,通过动态扩展存储与计算资源,性能优于传统的 MySQL 和 PostgreSQL。 

根据 AWS 的说法,得益于其分布式且高可用的架构,Aurora 可实现 高达五倍于标准 MySQL 的吞吐量以及三倍于标准 PostgreSQL 的性能。

Aurora 内置自动备份、用于横向扩展的只读副本,以及确保最小化停机时间的故障转移机制等特性。 

Aurora 的存储层设计为具备容错与自愈能力。 

此外,数据会自动在多个可用区(AZ)之间复制,以确保持久性。

下图展示了 Amazon Aurora 架构与关键功能的高层概览。

图示展示了 Aurora 集群中集群卷、写入实例与读取实例之间的关系。

Aurora 集群中,集群卷、写入数据库实例与读取数据库实例之间的关系。来源:AWS 文档

数据库引擎会持续监控查询并优化执行计划,从而显著提升效率。

Aurora 的一大优势是与现有 MySQL 和 PostgreSQL 数据库 的兼容性,这使企业无需对应用进行大量修改即可轻松迁移。

Aurora 的成本结构也很有吸引力。其费用基于计算与存储资源的实际使用量计费。这种成本模型无需为基础设施超额预置,从而节省支出。

> 如果您想更全面地了解 AWS 存储选项,欢迎查看这篇 AWS 存储教程。

设置 AWS Aurora

设置 AWS Aurora 包括创建数据库集群、配置安全设置并确保合适的网络访问。让我们在本节一起完成!

> 如果您是 AWS 新手,建议先通过 AWS 入门课程复习基础主题,再深入了解 Aurora。

创建 Aurora 数据库集群

设置 Aurora 数据库集群需要几个关键步骤,包括选择合适的数据库引擎、配置安全设置以及定义实例规格。

  • 首先,登录 AWS 管理控制台并导航到 RDS(关系型数据库服务)仪表板。 
    • 您可以在 AWS 管理控制台的搜索栏中搜索 “Aurora”,如下图所示。

AWS 管理控制台搜索栏的截图,显示 Amazon Aurora 服务的搜索结果。

  • 进入后,点击“Create Database(创建数据库)”,如下图所示。

AWS RDS 控制台显示“Create Database(创建数据库)”按钮的截图。

  • 随后,您可以选择“Amazon Aurora” 作为数据库引擎。 
    • 请注意,Aurora 同时支持 MySQL 和 PostgreSQL,因此务必选择最符合您应用需求的版本。

下图展示了当前可用的引擎选项。未来可能会发生变化,但前两个选项——Aurora(兼容 MySQL)与 Aurora(兼容 PostgreSQL)——即为 Aurora 引擎。

截图展示了选择 Amazon Aurora MySQL 或 PostgreSQL 作为数据库引擎的选项。

  • 选择引擎后,您需要指定实例类型与存储配置。 
    • Aurora 提供将存储自动扩展至 128TB 的灵活性,能在无需人工干预的情况下高效应对不断增长的工作负载。 
  • 接下来需要定义复制设置。您可以选择单实例部署,或启用只读副本以更高效地分担数据库流量。 
    • 使用只读副本还能提升可用性与容错性,在发生故障时确保更高的持久性。

下图标出了“Availability & durability(可用性与持久性)”部分,您可以在此配置这些设置。

AWS RDS 设置页面截图,显示用于配置高可用性和故障转移选项的“Availability & durability(可用性与持久性)”设置。

  • 网络配置阶段至关重要,涉及设置虚拟私有云(VPC)、选择安全组并定义访问控制。 
    • 安全组相当于防火墙,用于调控数据库的入站与出站流量。为增强安全性,建议仅允许来自受信任 IP 地址与应用的访问。

下图标出了“Connectivity(连接)”部分,您可以在此设置并自定义相关配置。

AWS RDS 数据库设置页面截图,显示连接选项。

  • 设置过程中还需配置数据库凭证——为主用户名与密码赋值,用于连接认证。 
  • Aurora 允许启用自动备份与时间点恢复(PITR)选项,确保持续创建数据库快照以防止数据丢失。

检查所有配置后,您即可创建 Aurora 集群。下图显示了可点击以开始创建流程的“Create Database(创建数据库)”按钮。

AWS RDS 控制台的截图,显示“Create database(创建数据库)”按钮。

资源预置过程可能需要几分钟,具体取决于所选实例大小与网络设置。

> 如果您对 AWS 服务还不熟悉,回顾 AWS 云技术与服务课程有助于理解与 Aurora 设置相关的关键概念。

配置网络与安全

安全是管理 Aurora 数据库的重中之重,AWS 提供多种工具来实施强有力的访问控制。 

  • 保护 Aurora 实例的第一步是配置 VPC 安全组。安全组决定哪些 IP 地址与服务可与数据库交互。 
    • 您应将访问限制到特定的应用服务器与管理员,以防止未授权连接。
  • 还可使用 AWS 身份与访问管理(IAM)为数据库操作定义细粒度权限。 
    • 集成 IAM 角色可根据具体的用户角色与职责定制数据库访问。
    • 例如,应用开发者可能仅授予读取权限,而管理员则拥有对数据库修改的完全控制权。
  • 也应启用加密以保护敏感数据。AWS Aurora 支持使用 AWS 密钥管理服务(KMS)实现静态与传输中加密。
    • 对静态数据加密可确保即使存储介质受损,没有正确解密密钥也无法访问数据。
    • 同样,对传输中数据启用安全套接字层(SSL)加密可防止数据库通信被未授权拦截。

> 若要更深入了解如何保护 AWS 环境,请查看 AWS 安全与成本管理课程。 如果您想进一步了解 IAM 的工作原理及其有效落地,请参阅这篇 AWS 身份与访问管理(IAM)指南。

连接到 AWS Aurora

连接到 AWS Aurora 是与数据库交互的基础。您可以通过客户端工具或应用进行连接。下面我们来看看具体方法!

连接到 Aurora MySQL

当 Aurora 数据库启动并运行后,您需要建立连接,才能开始与数据库交互。 

对于 Aurora MySQL,可以使用 MySQL Workbench、HeidiSQL 等常见数据库客户端进行连接,或使用命令行界面。

连接需要指定数据库终端节点,您可在 AWS 管理控制台中找到。 

使用 MySQL CLI,可通过以下命令建立连接:

mysql -h your-cluster-endpoint -u admin -p

输入主密码后,您即可执行 SQL 查询、创建表并管理数据。

连接到 Aurora PostgreSQL

对于 Aurora PostgreSQL,您可以使用 pgAdmin 或 PostgreSQL 命令行工具(psql)进行连接。 

在 psql 中的连接命令格式如下:

psql -h your-cluster-endpoint -U admin -d yourdatabasename

与 MySQL 相同,您需要输入正确的凭证才能访问数据库。 

获得访问权限后,您即可执行 SQL 查询、创建表并管理数据。

配置应用连接性

需要与 Aurora 交互的应用必须配置合适的数据库连接字符串。通常,这些连接字符串由用户名、密码、端口号与终端节点组成。 

建议使用连接池以优化性能,减少为每个请求新建连接的开销。 

诸如 Python 的 SQLAlchemy 或 Java 的 JDBC 等常用库,均提供在应用环境中高效管理连接的方法。

管理 AWS Aurora

高效管理 AWS Aurora 涉及确保数据保护、监控性能并按需扩展资源。本节将回顾相关实践。

备份与快照

AWS Aurora 提供自动备份,会持续捕获并将数据库更改存储到 Amazon S3。备份根据用户定义的设置保留,从而可以在保留期内恢复到任意时间点。 

除了自动备份,您还可以创建超出保留窗口的手动快照。手动快照特别适用于长期归档,或在执行重大数据库更新之前。 

在我参与的某个关键应用项目中,我们将自动备份设置为每两小时一次。另在对应用进行任何变更或更新之前,我们都会手动创建一次备份,以确保必要时可以回滚。这体现了如何将自动与手动备份结合有效使用。

下图展示了如何使用 AWS Backup 为 Amazon Aurora 实现灾难恢复。

来自 AWS 的图示,展示 Amazon Aurora 的备份与恢复选项。

Amazon Aurora 的备份与恢复选项。来源:AWS 博客

使用 CloudWatch 监控 Aurora

性能监控对于保持数据库健康至关重要。 

AWS CloudWatch 提供实时指标,跟踪 CPU 利用率、内存使用、磁盘 I/O 与网络流量。 

设置 CloudWatch 警报可在性能阈值被突破时通知管理员,从而实现前瞻性数据库管理。 

此外,AWS Performance Insights 提供详细的查询分析,以识别并优化慢查询。

下图演示了 AWS Performance Insights 如何提供数据库性能洞察。

AWS Performance Insights 仪表板的截图,显示数据库性能指标。

AWS Performance Insights 仪表板显示数据库性能指标。来源:AWS 文档

扩展 Aurora

Aurora 旨在按需自动扩展存储容量。但 CPU 与内存等计算资源可能需要根据工作负载手动调整。 

Aurora 通过添加只读副本来扩展读取能力,从而分散读取流量并提升性能。 

当高可用性至关重要时,可将 Aurora 集群配置为在不同可用区部署多个副本,以确保故障转移冗余。

AWS Aurora 的性能优化

优化 Amazon Aurora 的性能可确保高效的查询执行与良好的可扩展性。让我们在本节了解一些最佳实践。

索引与查询优化

优化 Amazon Aurora 中的查询性能对于维持高性能数据库至关重要。 

  • 建立索引是减少查询执行时间并提升数据库效率的最有效方法之一。 
    • 在常被查询的列上创建索引,可快速定位数据,减少全表扫描的需要。 
    • 应根据查询模式与工作负载需求,合理使用主索引与二级索引。 
    • 此外,对于涉及多列的查询,可使用复合索引以进一步提升检索速度。
  • 查询优化同样对数据库性能影响显著。编写高效 SQL 查询,能让 Aurora 以更少资源更快处理请求。 
    • 在 SQL 查询中使用EXPLAIN 或 EXPLAIN ANALYZE 有助于识别瓶颈并了解执行计划。 
    • 如避免使用 SELECT *(会检索不必要的数据)、对数据库模式进行规范化以减少冗余、并采用分区策略等技巧,都能带来性能收益。
    • Aurora 的查询计划优化器会持续改进执行计划,并根据数据库负载模式进行调整,从而提升整体效率。

使用 Aurora 只读副本

为应对高流量,Amazon Aurora 支持只读副本,将读密集型查询分散到多个实例上。 

只读副本可独立处理读取请求,减轻主实例负担,从而提升响应速度并降低延迟。 

要设置 Aurora 只读副本,您需要选择现有的 Aurora 集群并以最少的配置启用复制。Aurora 会在主实例与其副本之间自动同步数据,确保数据一致性,无需人工干预。

Aurora 的复制机制非常高效,可实现近实时的数据同步,复制延迟通常小于 1 秒。

对于频繁执行读取操作的应用(如报表看板或分析服务),将读密集型查询定向到只读副本可大幅受益。 

在主实例发生故障时,只读副本可在最小停机时间内晋升为新的主实例,确保高可用性与业务连续性。

下图展示了跨区域 Aurora 副本如何助力灾难恢复与高可用性。

AWS 图示展示了用于灾难恢复与高可用性的跨区域 Aurora 只读副本。

用于灾难恢复与高可用性的跨区域 Aurora 只读副本。来源:AWS 文档

Aurora 的缓存策略

缓存是一种强大的性能提升技术,可减少对 Aurora 的直接查询负载。对于频繁访问的查询,添加缓存层能显著加快数据检索。 

常与 Aurora 搭配使用的 Amazon ElastiCache(支持 Redis 与 Memcached)可用于存储查询结果,避免重复的数据库查询。

将缓存集成进应用架构,有助于在节省数据库计算资源的同时提升响应时间。 

诸如写穿缓存(数据同时写入缓存与 Aurora)与惰性加载(按需缓存数据)等策略,可根据使用模式优化性能。 

为缓存数据配置合适的 TTL(生存时间)可确保缓存保持新鲜,避免返回陈旧数据。

AWS Aurora 的安全与合规

保护您的 Aurora 数据库对于防护敏感数据与确保合规至关重要。本节将回顾相关最佳实践。

数据加密

数据安全是数据库管理的基础,AWS Aurora 提供可靠的加密机制来保护敏感数据。

  • Aurora 使用 AWS 密钥管理服务(KMS)对静态数据进行加密,确保即使底层存储受损,存储信息也依然安全。
    • 在创建数据库时启用加密,可确保所有自动备份、快照与副本继承相同的加密设置。
  • 对于传输中的数据,Aurora 支持 SSL/TLS 加密,从而保护数据库连接,防止未授权访问或数据传输被拦截。 
    • 连接到 Aurora 的应用应配置使用 SSL 证书以保持安全通信。 

这些加密措施有助于遵循安全最佳实践并满足监管要求。

下图展示了 AWS KMS 如何与 Amazon Aurora 集成以对您的数据库进行加密。

来自 AWS 博客的图示,展示 AWS 密钥管理服务(KMS)如何为 Amazon Aurora 加密数据以满足安全合规。

AWS 密钥管理服务(KMS)为 Amazon Aurora 加密数据,以满足安全合规。来源:AWS 博客

通过 IAM 实现访问控制

Aurora 的访问控制通过 AWS IAM 管理,管理员可以根据用户角色定义细粒度权限。 

  • IAM 策略可用于限制对数据库实例的访问,防止未授权用户执行数据修改或管理等关键操作。
  • IAM 身份验证相较传统的基于密码的身份验证更为安全。它允许应用使用临时安全凭证进行连接,从而无需存储与管理数据库密码,降低凭证泄露风险。 

您应坚持最小权限原则,以降低安全风险并严格控制数据库访问。

下图展示了如何配置 IAM 身份验证以保护对 Amazon Aurora PostgreSQL 数据库的访问。

来自 AWS 博客的截图,说明 IAM 身份验证如何与 Amazon Aurora PostgreSQL 集成。

IAM 身份验证与 Amazon Aurora PostgreSQL 集成。来源:AWS 博客

使用 Aurora 日志进行审计

监控与审计数据库活动对于安全合规与故障排查至关重要。 

Aurora 提供多种日志机制,包括错误日志、慢查询日志与通用日志,帮助管理员跟踪数据库活动并识别潜在问题。这些日志可在 AWS 管理控制台中启用,并存储到 Amazon CloudWatch 以便集中分析。

  • 错误日志捕获数据库引擎的错误与警告。
  • 慢查询日志有助于识别可能影响性能的低效查询。 

分析这些日志可帮助管理员优化查询执行、检测未授权访问尝试并确保数据库稳定性。

AWS Aurora 的成本管理与优化

要有效管理并优化 Amazon Aurora 的成本,您需要理解其定价结构。让我们来了解一下!

了解 Aurora 定价

Amazon Aurora 的定价模型基于多个因素,包括实例小时数、存储消耗、I/O 请求与数据传输。 

与需要预先预置基础设施的传统数据库不同,Aurora 的按需付费模式让企业只为实际消耗的资源买单。

计算实例按实例规格与运行时间计费,而存储会动态扩展,无需手动调整。

下图对 Amazon Aurora 的不同定价组成部分进行了分解。但请注意,定价可能变化,因此最好参考 Aurora 定价页面 以获取最新信息。

Amazon Aurora 定价详情的部分截图,概述实例使用、存储与数据传输的成本组成。

额外成本包括超出免费额度的备份存储、读写 I/O 请求,以及跨区域复制的数据传输费用。 

了解这些定价组件有助于您进行成本预估,并就数据库使用做出明智决策。

通过 Aurora 优化成本

为有效管理成本,组织可实施多种优化策略。 

选择合适的实例大小,确保数据库资源与工作负载需求匹配,避免过度预置。 

  • 对于可预测的工作负载,使用预留实例,相较按需定价可显著节省成本。
  • 通过监控未使用或利用率低的资源等存储优化技术,来降低成本。 
  • Aurora 的自动扩展功能会动态调整存储,避免不必要的存储开支。 
  • 此外,实施只读副本可分担主实例的查询,潜在地减少对更高规格实例的需求。
  • 利用Aurora Serverless,这对负载波动的应用是另一种高性价比方案。Aurora Serverless 会根据需求自动扩缩计算资源,确保您仅为实际使用付费,而无需维持持续运行的实例。

> 若想进一步了解成本管理,建议参考 AWS 安全与成本管理课程。 

结语

在多家公司长期使用 Amazon Aurora 之后,我可以笃定地说,它是一款功能强大且可扩展的数据库解决方案,能在不牺牲性能的前提下简化管理——读完本教程,您很可能也会有同感。

如果您在寻找一款支持 MySQL 与 PostgreSQL、同时能降低运维开销的云原生关系型数据库,Aurora 值得考虑。它在我参与的一些项目中起到了革命性的作用,若您正在使用 AWS 数据库,我强烈建议深入了解其能力。

如果您是 AWS 数据库新手,通过诸如这类课 AWS Cloud Practitioner(CLF-C02)程来学习基础概念会很有帮助!

FAQs

Aurora MySQL 与 Aurora PostgreSQL 有何区别?

Aurora MySQL 针对 MySQL 应用进行了优化,而 Aurora PostgreSQL 则支持 PostgreSQL 的特性与扩展。

Aurora 与 RDS 相比如何?

与标准 RDS(MySQL 与 PostgreSQL)相比,Aurora 具备更高的性能与可扩展性,MySQL 吞吐量可提升至五倍。它与 MySQL/PostgreSQL 完全兼容,并包含 AWS 托管的自动备份、补丁与故障转移等功能。

我可以将现有的 MySQL/PostgreSQL 数据库迁移到 Aurora 吗?

可以,AWS 数据库迁移服务(DMS)支持无缝迁移至 Aurora。

Aurora 是否支持多区域复制?

可以,Aurora 全球数据库(Aurora Global Database)支持低延迟的跨区域复制。

如何降低 Aurora 的成本?

使用预留实例、Aurora Serverless 与只读副本来优化成本。

Amazon Aurora 是无服务器的吗?

可以。Amazon Aurora 提供名为 Aurora Serverless 的无服务器选项,会根据需求自动扩缩,非常适合不可预测的工作负载。

Aurora 提供哪些备份与恢复选项?

Aurora 提供到 Amazon S3 的自动连续备份,并支持手动快照。您可以按需从指定时间点或快照中恢复数据库。

我可以将 Aurora 用于高可用应用吗?

可以。Aurora 专为高可用性设计,具备自动故障转移、多可用区部署,以及 Aurora Read Replicas 与 Aurora Global Database 等复制功能。

Don Kaluarachchi

作者

Don Kaluarachchi

我是 Don——一名顾问、开发者、工程师、数字架构师和作者(基本上,我身兼数职 👨‍💻🎩)。我热衷于让数字平台顺畅运行,并不断寻找改进的方法。不写代码的时候,我会写写关于人工智能、数据科学以及各类技术主题的文章。
 
多年来,我参与过从构建与优化软件到部署 AI 模型、设计云端解决方案等各类项目。我拥有伦敦布鲁内尔大学的人工智能理学硕士学位和计算机科学理学学士学位。

主题