Amazon RDS 只读副本有助于提高 RDS 数据库 (DB) 实例的性能和持久性。它们可以轻松地进行弹性横向扩展,从而超出单个数据库实例的容量限制,以读取密集型数据库工作负载。您可以为给定源数据库实例创建一个或多个副本,并从数据的多个副本提供大容量应用程序读取流量,从而提高总读取吞吐量。只读副本还可以在需要时升级成为独立数据库实例。只读副本在 Amazon RDS for MySQL、MariaDB、PostgreSQL、Oracle 和 SQL Server 以及 Amazon Aurora。
对于 MySQL、MariaDB、PostgreSQL、Oracle 和 SQL Server 数据库引擎,Amazon RDS 会使用源数据库实例的快照创建第二个数据库实例。然后,只要源数据库实例发生更改,它就会使用引擎的本机异步复制来更新只读副本。只读副本作为只允许只读连接的数据库实例运行,应用程序可以像连接任何数据库实例一样连接到只读副本。Amazon RDS 会复制源数据库实例中的所有数据库。
Amazon Aurora 通过采用专为数据库工作负载构建、基于 SSD 的虚拟化存储层,进一步扩展了只读副本的优势。Amazon Aurora 副本与源实例共享相同的底层存储,从而降低成本并避免将数据复制到副本节点。有关使用 Amazon Aurora 进行复制的更多信息,请参阅线上文档。
优势
增强的性能
您可以通过将应用程序中的读取查询路由到只读副本来减少源数据库实例的负载。只读副本可以帮助您进行弹性横向扩展,从而超出单个数据库实例的容量限制,以读取密集型数据库工作负载。 由于只读副本可以升级为主状态,因此它们可以在分区实施的过程中提供很大帮助。
为了进一步最大限度地提高读取性能,Amazon RDS for MySQL 允许您将表索引直接添加到只读副本中,而不用出现在主数据库中的索引。
提高可用性
Amazon RDS for MySQL、MariaDB、PostgreSQL、Oracle 和 SQL Server 中的只读副本为 Amazon RDS 多可用区部署提供了互补的可用性机制。如果源数据库实例出现故障,您可以升级只读副本,还可以在不同的可用区中设置自己的备用实例只读副本。此功能补充了随多可用区部署提供的同步复制、自动故障检测和故障转移功能。
专为安全而设计
当您为 Amazon RDS for MySQL、MariaDB、PostgreSQL、Oracle 和 SQL Server 创建只读副本时,Amazon RDS 会在源数据库实例和只读副本之间使用公钥加密设置安全通信渠道,即使是执行跨区域复制也是如此。Amazon RDS 建立启用安全渠道所需的任何亚马逊云科技安全配置,例如添加安全组条目。
您还可以为使用 Amazon Key Management Service (KMS) 静态加密的 Amazon RDS for MySQL、MariaDB、PostgreSQL、Oracle 和 SQL Server 数据库实例创建只读副本。
设置
使用亚马逊云科技管理控制台,您可以轻松地将只读副本添加到现有数据库实例中。在亚马逊云科技管理控制台中使用与数据库实例对应的“创建只读副本”选项。 Amazon RDS for MySQL、MariaDB 和 PostgreSQL 允许您向每个数据库实例添加最多 15 个只读副本。Amazon RDS for Oracle 和 SQL Server 允许您向每个数据库实例添加最多 5 个只读副本。
Amazon RDS for MySQL、MariaDB、PostgreSQL 和 Oracle 为您提供了两种基于 SSD 的数据库存储选择:通用型和预调配 IOPS。这些引擎的只读副本不需要使用与主数据库实例相同的存储类型。您可以通过为只读副本选择替代存储类型来优化性能或缩减开支。有关更多信息,请参阅 Amazon RDS for MySQL、MariaDB、PostgreSQL、Oracle 和 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 功能结合起来,以享受每种功能的好处。例如,您可以将源数据库配置为多可用区以实现高可用性,并创建只读副本(在单可用区中)以实现读取可扩展性。
借助适用于 MySQL、MariaDB、PostgreSQL 和 Oracle 的 RDS,您还可以将只读副本设置为多可用区,从而使您能够将只读副本用作灾难恢复目标。将只读副本提升为独立数据库时,它将处于已启用多可用区的状态。