Amazon RDS Read Replicas

Amazon RDS Read Replicas 可增强 Amazon RDS 数据库(DB)实例的性能和持久性。它们可以轻松实现弹性横向扩展,超越单个数据库实例的容量限制,满足读取密集型数据库工作负载的需求。您可以为给定的源数据库实例创建一个或多个副本,利用多份数据副本满足大量应用程序读取流量需求,以此增加总读取吞吐量。只读副本在需要时还能升级成独立的数据库实例。只读副本适用于 Amazon RDS for MySQLAmazon RDS for MariaDBAmazon RDS for PostgreSQLAmazon RDS for Oracle 以及 Amazon RDS for SQL ServerAmazon Aurora

对于 MySQL、MariaDB、PostgreSQL、Oracle 和 SQL Server 数据库引擎,Amazon RDS 使用源数据库实例快照创建第二个数据库实例。然后在源数据库实例发生更改时,使用引擎的原生异步复制功能更新只读副本。只读副本是仅允许只读连接的数据库实例;应用程序可按其连接到任何数据库实例的方式连接到只读副本。Amazon RDS 可复制源数据库实例中的所有数据库。

Amazon Aurora 通过部署专为数据库工作负载构建的 SSD 支持虚拟存储层进一步扩展了只读副本的优势。Amazon Aurora 副本与源实例共用同一个底层存储,从而降低成本并消除将数据复制到副本节点的需求。如需了解有关使用 Amazon Aurora 进行复制的更多信息,请参阅在线文档

读取扩展和灾难恢复

Amazon RDS 只读副本的优势

您可以将应用程序发出的读取查询路由到只读副本,以减轻源数据库实例上的负载。只读副本让您可以实现弹性横向扩展并超越单个数据库实例的容量限制,以处理高读取量的数据库工作负载。因为只读副本可以升级到主数据库实例状态,作为分片实施的一部分,它们非常有用。为进一步最大限度地利用读取性能,Amazon RDS for MySQL 允许您直接向 Read Replicas 添加表索引,无需将其展现在主数据库实例上。
Amazon RDS for MySQL、MariaDB、PostgreSQL、Oracle 和 SQL Server 中的只读副本为 Amazon RDS Multi-AZ 部署提供了一种互补的可用性机制。您可以在源数据库实例发生故障的情况下升级只读副本,还可以通过位于不同可用区中的自有备用实例设置只读副本。此功能旨在完善多可用区部署附带的同步复制、自动故障检测和故障转移工具。
在为 Amazon RDS for MySQL、MariaDB、PostgreSQL、Oracle 或 SQL Server 创建只读副本后,Amazon RDS 会使用公钥加密方式在源数据库实例和只读副本之间设置一个安全的通信通道,即使跨区域复制也是如此。Amazon RDS 会建立任何必要的 AWS 安全配置(如添加安全组条目)来启用安全通道。此外,您还可以为使用 AWS Key Management Service (KMS) 静态加密的 Amazon RDS for MySQL、MariaDB、PostgreSQL、Oracle 和 SQL Server 数据库实例创建只读副本。

设置

使用 AWS 管理控制台,您可以轻松地将只读副本添加到现有数据库实例。在 AWS 管理控制台中,使用与您的数据库实例对应的“创建只读副本”选项。Amazon RDS for MySQL、Amazon RDS for PostgreSQL、Amazon RDS for MariaDB 和 Amazon RDS for SQL Server 允许您向每个数据库实例添加最多 15 个只读副本。Amazon RDS for Oracle 允许您向每个数据库实例添加最多 5 个只读副本。

Amazon RDS for MySQL、Amazon RDS for PostgreSQL、Amazon RDS for MariaDB 和 Amazon RDS for Oracle 为您提供两种基于 SSD 的数据库存储选择:通用型和预调配 IOPS。这些引擎的只读副本不需要与其主数据库实例使用相同的存储类型。您可以通过为只读副本选择一个备用存储类型来优化性能或费用。 有关更多信息,请参阅 Amazon RDS for MySQLAmazon RDS for MariaDBAmazon RDS for PostgreSQLAmazon RDS for OracleAmazon RDS for SQL Server 以及 Amazon Aurora 的只读副本文档。

只读副本、多可用区部署和多区域部署

Amazon RDS 只读副本是对多可用区部署的补充。虽然这两项功能均能保留数据的第二个副本,但两者有所不同:

多可用区部署

多区域部署

只读副本

主要目的是高可用性

主要目的是灾难恢复和本地性能

主要目的是可扩展性

非 Aurora:同步复制;Aurora:同步复制

异步复制

异步复制

非 Aurora:只有主实例活跃;Aurora:所有实例都活跃

所有区域均可访问且可用于读取

所有只读副本均可访问且可用于读取扩展

非 Aurora:从备用实例自动备份;Aurora:从共享存储层自动备份

自动备份可在每个区域中进行

默认不配置备份

始终跨单个区域中的至少两个可用区

每个区域中均可有多可用区部署

可以在一个可用区,也可以跨可用区或区域

非 Aurora:数据库引擎版本升级发生在主实例上;Aurora:所有实例一起更新

非 Aurora:每个区域中的数据库引擎版本升级独立进行;Aurora:所有实例一起更新

非 Aurora:数据库引擎版本升级从源实例独立进行;Aurora:所有实例一起更新

检测到问题时自动失效转移到备用(非 Aurora)或只读副本(Aurora)

Aurora 允许将辅助区域升级为主区域

可手动升级到独立的数据库实例(非 Aurora)或主实例(Aurora)

您可以组合使用只读副本与其他 Amazon RDS 功能以获得它们各自的优势。例如,您可以用多可用区部署的方式配置源数据库以实现高可用性,并创建只读副本(在单可用区中)以实现读取可扩展性。或者,您也可以使用 Aurora Global Database 将数据从您的多可用区 Aurora 部署复制到其他区域中。

借助 RDS for MySQL、RDS for MariaDB、RDS for PostgreSQL 和 RDS for Oracle,您还可以将只读副本设置为多可用区,从而将只读副本用作 DR 目标。将只读副本升级到独立的数据库时,便已启用多可用区部署。