亚马逊Aurora:是什么,如何工作,以及如何入门

在各家公司使用了一段时间的Amazon Aurora后,我亲眼见证了它作为完全托管的关系型数据库引擎在性能、扩展性和可靠性方面的出色表现。

Aurora作为云原生解决方案,支持MySQL和PostgreSQL,是需要高可用性和自动扩展的企业的绝佳选择。由于AWS自动管理备份、故障转移和复制,使用Aurora可以提高数据库效率,同时降低维护成本。

在本教程中,我将指导您设置Aurora实例,有效管理它,优化性能,并确保安全性和成本效益。

AWS Aurora是什么?

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

据AWS称,Aurora可以提供标准MySQL高达五倍的吞吐量,以及标准PostgreSQL高达三倍的性能 – 这归功于其分布式和高可用的架构。

Aurora具有诸如自动备份、用于水平扩展的读取副本和故障转移机制等功能,可确保最小的停机时间。

Aurora的存储层设计具有容错和自我修复功能。

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

下面的图片提供了Amazon Aurora架构和关键特性的高级概述。

Aurora集群中集群卷、写入DB实例和读取DB实例之间的关系。来源:AWS文档

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

Aurora的一个主要优势是它与现有的MySQLPostgreSQL数据库的兼容性,这使企业能够轻松迁移,而无需对其应用程序进行大规模修改。

Aurora的成本结构也很有吸引力。它根据实际使用的计算和存储资源收费。这种成本模型消除了过度配置基础设施的必要,从而节省了开支。

> 如果您有兴趣更全面地了解AWS存储选项,请查看这个 AWS存储教程

设置AWS Aurora

设置AWS Aurora涉及创建数据库集群、配置安全设置和确保适当的网络访问。让我们在本节中完成这些步骤!

> 如果您是AWS的新手,请考虑在深入了解Aurora之前通过Introduction to AWS》课程审阅基础主题。

创建Aurora数据库集群

设置Aurora数据库集群需要一些关键步骤,包括选择适当的数据库引擎、配置安全设置和定义实例规格。

  • 要开始,请登录AWS管理控制台,然后转到RDS(关系型数据库服务)仪表板。
    • 您可以在AWS管理控制台的搜索面板中搜索“Aurora”来完成此操作 – 如下图所示。

  • 一旦进入搜索结果页面,点击“创建数据库” – 如下图所示。

  • “Amazon Aurora”作为数据库引擎的选项。
    • 请记住,Aurora同时支持MySQL和PostgreSQL,因此选择最符合您应用程序需求的版本非常重要。

下面的图片显示当前可用的引擎选项。这些可能会在未来发生变化,但前两个选项——Aurora(与MySQL兼容)和Aurora(与PostgreSQL兼容)——都是Aurora引擎。

  • 在选择引擎后,您必须指定实例类型和存储配置。
    • Aurora提供了自动扩展存储容量高达128TB的灵活性,确保增长的工作负载能够在不需要手动干预的情况下得到有效处理。
  • 下一步是定义复制设置。您可以选择单实例部署,或启用只读副本以更有效地分发数据库流量。
    • 使用只读副本还可以增强可用性和容错性,确保在发生故障时具有更高的耐用性。

下图突出显示了“可用性和耐用性”部分,您可以在此处配置这些设置。

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

下面的图像突出了“连接性”部分,在这里您可以设置和自定义这些配置。

  • 在设置期间还必须配置数据库凭据 – 您需要分配一个主用户名和密码,用于验证连接。
  • Aurora 允许启用自动备份和时间点恢复选项。这确保数据库快照被持续创建,以防止数据丢失。

在审核所有配置后,您可以继续创建 Aurora 集群。下图显示了 “创建数据库” 按钮,您可以点击它以启动创建过程。

根据所选实例大小和网络设置,配置过程可能需要几分钟。

> 如果您是AWS服务的新手,查看AWS云技术和服务课程可以帮助您了解与Aurora设置相关的关键AWS概念。

配置网络和安全

安全对于管理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备份来进行亚马逊Aurora的灾难恢复。

亚马逊Aurora的备份和恢复选项。来源:AWS博客

使用CloudWatch监控Aurora

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

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

设置CloudWatch警报可以帮助管理员在性能阈值超过时收到通知,从而实现积极的数据库管理。

除此之外,AWS性能洞察提供详细的查询分析,以识别和优化运行缓慢的查询。

以下图片展示了AWS性能洞察如何提供有关数据库性能的洞察。

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

扩展Aurora

Aurora被设计为通过根据需要调整存储容量来自动扩展。然而,根据工作负载,计算资源如CPU和内存可能需要手动调整。

Aurora通过添加读取副本提供了扩展读取容量的选项,这些副本会分发读取流量并提高性能。

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

在AWS Aurora中的性能优化

在Amazon Aurora中优化性能可确保高效的查询执行和可伸缩性。让我们在本节中了解一些最佳实践。

索引和查询优化

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

  • 索引是减少查询执行时间和增强数据库效率的最有效方法之一。
    • 在经常查询的列上创建索引可以帮助快速定位数据,减少对完整表扫描的需求。
    • 您应该根据查询模式和工作负载需求来策略性地使用主索引和次要索引。
    • 除了上述内容,您还可以为涉及多个列的查询使用复合索引以进一步改善查找时间。
  • 查询优化也在数据库性能中发挥着重要作用。编写高效的SQL查询可确保Aurora以更快的速度处理请求并减少资源消耗。
    • 使用EXPLAIN或EXPLAIN ANALYZE在SQL查询中有助于识别瓶颈并提供执行计划的见解。
    • 诸如避免SELECT *(检索不必要的数据)、将数据库模式规范化以减少冗余,并利用分区策略等技术可以提高性能。
    • Aurora的查询计划优化器不断完善执行计划,根据数据库工作负载模式进行调整,从而提高整体效率。

使用Aurora读取副本

为处理高流量负载,Amazon Aurora支持读取副本,有助于将读密集型查询分布到多个实例中。

读取副本通过分别处理读取请求减轻了主数据库实例的负担,提高了响应速度并降低了延迟。

要设置Aurora读取副本,您需要选择一个现有的Aurora集群并进行最小配置的复制设置。Aurora会自动在主实例和其副本之间同步数据,确保数据一致性,无需手动干预。

Aurora的复制机制非常高效,可以实现几乎实时的数据同步,复制延迟少于一秒。

执行频繁读取操作的应用程序,如报告仪表板或分析服务,可以通过将读取密集型查询定向到这些实例来显著受益于读取副本。

在主实例故障的情况下,可以将只读副本提升为新的主实例,从而实现最小的停机时间,确保高可用性和业务连续性。

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

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

针对 Aurora 的缓存策略

缓存是一种强大的技术,通过减少对 Aurora 的直接查询负载来增强数据库性能。缓存层可以显著加快对频繁访问查询的数据检索。

Amazon ElastiCache 支持 Redis 和 Memcached,通常与 Aurora 一起使用,用于存储查询结果并防止冗余数据库查询。

将缓存集成到应用架构中可以帮助提高响应时间,同时保留数据库计算资源。

写入缓存策略(即同时将数据写入缓存和 Aurora)和延迟加载(即仅在请求时才缓存数据)等缓存策略可根据使用模式优化性能。

为缓存数据配置适当的生存时间(TTL)可确保缓存保持新鲜,并防止检索到陈旧数据。

AWS Aurora 中的安全性和合规性

保护您的Aurora数据库对于保护敏感数据和确保合规性至关重要。让我们在本节中回顾最佳实践。

数据加密

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

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

这些加密措施可以帮助您遵循安全最佳实践和合规要求。

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

AWS密钥管理服务(KMS)用于加密Amazon Aurora中的数据,以符合安全合规性。来源:AWS博客

用于访问控制的IAM集成

Aurora中的访问控制通过AWS IAM进行管理,允许管理员基于用户角色定义细粒度权限。

  • IAM策略可用于限制对数据库实例的访问,防止未经授权的用户执行数据修改或管理任务等关键操作。
  • IAM身份验证提供了与传统基于密码的身份验证相比更安全的替代方案。它允许应用程序使用临时安全凭证进行连接。这消除了存储和管理数据库密码的需要,降低了凭据曝露的风险。

您应该强制执行最小特权访问原则,最大限度地减少安全风险,并严格控制数据库访问。

下图显示了如何配置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定价页面 获取 最新信息。

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

了解这些定价组件可以帮助您预测开支,并就数据库使用做出明智决策。

使用Aurora优化成本

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

选择合适的实例大小将确保数据库资源与工作负载需求相匹配,而不会过度供应。

  • 如果您有可预测的工作负载,请使用预留实例,因为它们相比按需定价提供显著的成本节省。
  • 存储优化技术,如监控未使用或利用不足的资源,有助于降低成本。
  • 奥罗拉的自动扩展功能会动态调整存储空间,避免不必要的存储费用。
  • 此外,实施只读副本可以减轻主实例的查询负担,潜在地降低对更高级别实例的需求。
  • 利用Aurora Serverless,因为这是另一个适用于具有可变工作负载的应用程序的经济实惠选项。 Aurora Serverless根据需求自动扩展计算资源,确保企业只为实际使用付费,而不是维护持续运行的实例。

> 如果您想深入了解成本管理,请参考AWS安全性与成本管理课程。

结论

在多家公司使用Amazon Aurora一段时间后,我可以自信地说,它是一个强大且可扩展的数据库解决方案,使管理变得更加轻松,而不牺牲性能——在您完成本教程后,您可能会同意这一点。

如果您正在寻找一个支持MySQL和PostgreSQL的云原生关系数据库,同时减少运营开销,Aurora值得考虑。它在我的一些项目中具有革命性,我强烈建议您了解其功能,如果您正在使用AWS数据库。

如果您是AWS数据库的新手,通过课程学习基本概念,比如AWS云从业者(CLF-C02),会很有益处!

Source:
https://www.datacamp.com/tutorial/amazon-aurora