注意事项 客户须根据实际业务情况酌情参考本文档中的信息。本文档:(a)仅供参考;(b)基于当前亚马逊云科技产品和用途。如有更改,恕不另行通知;(c)不代表亚马逊云科技及其附属公司、供应商或许可方作出任何承诺或保证。文中涉及的亚马逊云科技产品或服务均“按原样”,不包含任何形式的保证、陈述或条件,无论是明示还是暗示。亚马逊云科技对客户的责任和义务受双方协议约束,本文档与亚马逊云科技和客户之间签订的任何协议无关,亦不影响任何此类协议。 © 2024 Amazon Web Services, Inc.或其附属公司保留所有权利 目录 Amazon Aurora架构及其高可用性和容灾功能07单区域实现高可用性和容灾12跨区域扩展高可用性和容灾12 监控高可用性和容灾环境13 监控Amazon Aurora事件14 常见的高可用性和容灾使用场景与设计模式17在打补丁、升级和重大Schema变更期间保持可用性26总结30贡献者31延伸阅读32 摘要与简介 摘要 Amazon Aurora是一款全托管的关系型数据库,提供超高性能、全球规模的可用性,并与MySQL和PostgreSQL完全兼容。Amazon Aurora提供单区域和跨区域的高可用性(HA)和容灾(DR)能力。本白皮书探讨了Amazon Aurora提供的高可用性和容灾能力,展示了支撑构建具有韧性的全球化应用程序的设计模式,阐述了如何利用Amazon Aurora的多可用区(AZ)部署和Global Database(全球数据库)功能,以及如何在单个区域内和跨区域实现高可用性和容灾。 您的架构是否符合良好架构原则? Amazon Well-Architected Framework可帮助您权衡在云端构建系统时所做决策的利弊。该框架的六大支柱助您在设计和运营可靠、安全、高效、经济实惠且可持续的系统时实现架构最佳实践。借助AmazonWell-Architected Tool(可在亚马逊云科技管理控制台中免费使用),可以衡量针对每个支柱的系列问题,评估您的工作负载是否遵循这些最佳实践。 在亚马逊云科技上的工作负载容灾:云端恢复白皮书中,我们描述了一套经客户验证的最佳实践,用于设计架构良好的容灾工作负载。 如需获得更多关于云架构的专家指导和最佳实践资源(包括参考架构部署、图表和白皮书),请访问亚马逊云科技架构中心。 简介 Amazon Aurora是完全兼容MySQL和PostgreSQL的关系型数据库管理系统(RDBMS)。Amazon Aurora能够以十分之一的成本提供媲美商业数据库的性能和可用性。Amazon Aurora也是一款全托管数据库服务,可实现全自动化管理数据库,例如高可用性(HA)、容灾(DR)、复制、扩展、备份、恢复和监控。本白皮书将探讨Amazon Aurora的高可用性和容灾能力,以及如何利用常见的架构模式,在单个区域和多个区域实现高可用性和容灾。 注意:除非另有说明,本白皮书涵盖的所有特性、功能和架构模式均适用于Amazon Aurora MySQL和Amazon Aurora PostgreSQL。 在探索Amazon Aurora的高可用性和容灾功能之前,让我们先理解高可用性和容灾的含义。 高可用性 摘要与简介 可用性是衡量系统韧性的常用定量指标。工作负载的可用性指其可访问时间占总运行时间的百分比。该百分比在一定时间范围内(如一个月或一年)计算得出(可用时间/总时间),例如99.99%(4个9)。 您的架构是否符合良好架构原则? 具备高可用性的数据库能在硬件、软件或网络故障等问题发生时,以最少或无需人工介入的方式确保服务等级协议规定的运行性能。传统的高可用性实现方式是在与源数据库隔离的硬件上创建一个主数据库的副本。1当发生中断时,该副本将被提升为新的主数据库。数据库与应用程序的连接可通过虚拟IP (VIP)、域名系统(DNS)重定向或Proxy层等方式进行管理。2系统可结合仲裁投票和心跳机制等多种方法监控主数据库健康状态,从而检测中断情况。3 Amazon Aurora架构及其高可用性和容灾功能 单区域实现高可用性和容灾 跨区域扩展高可用性和容灾 容灾 监控高可用性和容灾环境监控Amazon Aurora事件 容灾和高可用性是高韧性数据库架构的两个完全独立但同等重要的能力。容灾是指企业在自然灾害或人为灾难发生后恢复IT基础设施访问和功能的方法。容灾策略可能需要人工干预,例如运行脚本、更改端点和调整基础设施规模。 最佳实践 容灾通常不仅局限于数据库层面。例如,发生重大自然灾害后,整个数据中心可能无法访问。在这种情况下,容灾流程可用于恢复数据库和应用程序,使应用能在另一个未受影响的亚马逊云科技区域继续运行。容灾流程通常包括完善的备份策略。备份可让数据库恢复到灾难发生前的特定时间点。 指定RTO和RPO 制定与RTO和RPO相匹配的高可用性和容灾策略 编写并测试高可用性和容灾流程文档 设计容灾流程时,需要考虑的两个关键因素是恢复时间目标(RTO)和恢复点目标(RPO)。RTO和RPO取决于应用程序及其底层数据库的业务需求。即使在同一企业或部门内,不同的应用程序和工作负载也可能有不同的RTO和RPO要求。 定期测试和审查高可用性及容灾实现流程 常见的高可用性和容灾使用场景与设计模式 RPO是指从最近数据恢复点算起可接受的最大间隔长度。它决定了在数据库中断与最近一个恢复点之间可允许的数据丢失量。例如,如果您将RPO定义为15分钟,那么在发生灾难时,您最多可能丢失15分钟的数据。 在打补丁、升级和重大Schema变更期间保持可用性 总结 RTO是指从数据库中断到服务恢复的最大可接受延迟时间。它决定了可接受的数据库不可用时间窗口。例如,如果您确定应用程序的RTO为5分钟,那么您的容灾策略应该能让应用程序(包括数据库和其他应用程序组件)在5分钟内恢复服务。 贡献者 延伸阅读 文档修订 Amazon Aurora架构及其高可用性和容灾功能 分布式存储 Amazon Aurora架构从设计之初就考虑了高可用性和容灾能力。Amazon Aurora的存储子系统是分布式的,专为Amazon Aurora量身打造。Amazon Aurora采用六副本方式,同时在三个可用区复制新写入数据库的数据。即使在极少发生的整个可用区故障加上另一个可用区并发存储节点故障(AZ+1故障)的情况下,分布式存储仍能确保您的数据保持完整。这种分布式存储架构还能利用存储节点间的peer-to-peer协议自动扩展和自我修复,比如应对节点故障和恢复丢失的数据库写入。 尽管Amazon Aurora分布式存储子系统提供了增强的数据持久性,但它本身并不能使数据库实现高可用性。下面我们来讨论Amazon Aurora数据库集群的高可用性方案。 Amazon Aurora架构中,计算资源与存储解耦,从而允许计算和存储子系统独立地从故障中恢复。可以将一个Aurora数据库集群部署到单个区域中的一个或多个可用区中。单可用区Aurora数据库集群由一个写入实例组成,该实例可接受读取和写入请求。 延伸阅读 文档修订 多可用区Aurora数据库集群由一个写入数据库实例和至少一个(最多15个)只读数据库实例组成。只读数据库实例作为低延迟读取副本,只能接受读请求。多可用区Aurora数据库集群是一种全托管的单区域高可用性方案。多可用区Aurora数据库集群需要一个写入数据库实例和一个或多个只读数据库实例,且只读实例与写入实例必须部署在不同的可用区中。以多可用区模式部署时,Amazon Aurora提供99.99%(4个9)的运行时间服务级别协议(SLA)。Aurora数据库集群提供一个集群端点(或写入实例端点),该端点始终连接至当前的写实例,可接受读取和写入请求。Aurora数据库集群还提供一个连接至只读实例的只读端点。如果存在多个只读实例,Amazon Aurora会对所有可用的只读实例进行负载均衡。 采用多可用区架构时,Amazon Aurora自动检测写入实例中断,并自动实现故障转移,切换到数据库集群中的某个只读实例。如果存在多个只读实例,可以配置参数值(0–15)为它们分配优先级顺序。优先级最高(参数值为0)的只读实例将被选为首要故障转移目标。故障转移成功后,使用写入端点重新连接的应用程序会自动被重定向到新的写入实例。因此,应用程序无需任何改动即可在故障转移后重新连接至数据库。故障转移最多可能需要60秒完成。在此期间及之前应用程序提交的请求都会失败,因此需要应用程序重新提交那些请求。使用Amazon Relational Database Service (Amazon RDS)Proxy可以进一步缩短故障转移时间,它能在保持应用程序连接的同时自动连接至新的数据库实例。当故障转移发生时,Amazon RDSProxy会直接将请求路由至新的数据库实例,可将Aurora数据库的故障转移时间最多缩短66%。 Amazon Aurora还支持在Amazon Web Services JDBC Driver中使用一个增强型Java数据库连接(JDBC)封装器。该封装器是现有的开源JDBC的扩展。其作用是扩展驱动程序功能,使应用程序能够充分利用Amazon Aurora的功能。Amazon Web Services JDBC Driver支持PostgreSQL和MySQL(PostgreSQL JDBC Driver或MySQLJDBC Driver)。Amazon Web Services JDBCDriver能够感知故障转移,并与Amazon Aurora集群协同工作,以最大限度减少停机时间,并在数据库实例发生故障时快速恢复连接。 摘要与简介 Amazon Aurora提供全托管备份能力。您可以为您的Aurora数据库集群启用自动备份功能,并将备份保留时间设置为1到35天。配置完成后,Amazon Aurora将自动持续备份您的数据库集群。如果需要保留超出备份保留期限的数据,您可以为Amazon Aurora集群存储卷中的数据创建快照。请注意,Amazon Aurora数据库集群快照不会自动过期,如果不再需要,您必须手动将其删除。您可以利用时间点恢复(PITR)功能,将Aurora数据库恢复到备份保留期内的任意时间点。除此之外,您也可以使用Amazon Backup服务来管理Amazon Aurora数据库集群的备份。 单区域实现高可用性和容灾 跨区域扩展高可用性和容灾 监控高可用性和容灾环境监控Amazon Aurora事件 最佳实践 Amazon Aurora Global Database 指定RTO和RPO Amazon Aurora还提供Amazon Aurora Global Database,可以实现数据库集群跨多个区域运行。Aurora Global Database采用异步复制方式复制数据,一般延迟不到1秒,同时保持数据库高可用以运行应用程序工作负载。一个Aurora Global Database最多可部署到5个备区域。每个备区域中最多可配置15个只读实例。这种架构将读节点规模扩展到最多支持5个备区域和90个只读实例。Aurora Global Database支持在每个区域进行低延迟的快速本地读取,并能从区域级故障中快速恢复。如果主区域发生故障,您可以将其中一个备区域提升为承担读/写处理的主区域。即使在整个区域服务完全中断的情况下,Amazon Aurora数据库集群通常也能在1分钟内恢复。这可以使您的应用程序实现1秒RPO和1分钟RTO,为Amazon Aurora数据库集群的全球业务连续性奠定坚实基础。 制定与RTO和RPO相匹配的高可用性和容灾策略 编写并测试高可用性和容灾流程文档 定期测试和审查高可用性及容灾实现流程 常见的高可用性和容灾使用场景与