用于读取扩展的只读副本
创建只读副本以分担读取流量,了解异步复制延迟,并将副本提升用于 DR。
用于读取扩展的只读副本 是 CoddyKit 上的免费 AWS Solutions Architect 课时。 这是第 3 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 AWS Solutions Architect 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 AWS Solutions Architect 课程共包含 4 节课。
什么是 Read Replicas
Read Replicas是 RDS 主实例的副本,通过异步复制接收更新。与多 AZ 备用实例不同,Read Replicas 可用于执行 SELECT 查询,因此您可以分发读取流量并减轻主数据库的负载。
MySQL、PostgreSQL、MariaDB、Oracle(使用 Active Data Guard)以及所有 Aurora 版本都支持 Read Replicas。Aurora MySQL 和 Aurora PostgreSQL 最多可以拥有 15 个 Read Replicas,标准 RDS MySQL/PostgreSQL 最多可以拥有 5 个。
创建 Read Replica
要创建 Read Replica,您的源实例必须启用自动备份(保留期大于 0)。AWS 会为主实例创建快照,在新的数据库实例中恢复该快照,然后从主实例建立异步复制。
每个 Read Replica 都有自己的 DNS 端点。您必须更新应用程序,使读取请求指向副本端点。连接池程序或支持读写分离的应用程序框架可以自动将 SELECT 查询路由到副本。
# Create a Read Replica from the primary
aws rds create-db-instance-read-replica \
--db-instance-identifier mydb-replica-1 \
--source-db-instance-identifier mydb \
--db-instance-class db.t3.medium复制延迟及其影响
由于复制是异步的,Read Replicas 可能会根据写入量落后于主实例几毫秒到几秒。这称为复制延迟。您可以通过 CloudWatch 的 ReplicaLag 指标对其进行监控。
应用程序必须经过设计,能够容忍从副本读取时的最终一致性。例如,插入一条记录后立即从副本读取,可能暂时还无法返回新行。要实现读取后写入一致性,必须将该次特定读取请求路由回主实例。
# Monitor replication lag via CloudWatch
aws cloudwatch get-metric-statistics \
--namespace AWS/RDS \
--metric-name ReplicaLag \
--dimensions Name=DBInstanceIdentifier,Value=mydb-replica-1 \
--start-time 2026-06-20T00:00:00Z \
--end-time 2026-06-20T01:00:00Z \
--period 60 \
--statistics Average跨区域 Read Replicas
RDS 支持在不同的 AWS 区域中创建 Read Replicas,从而实现全球读取扩展和灾难恢复。跨区域复制使用公共互联网或 AWS Global Accelerator;由于网络延迟,其复制延迟高于同一区域内的复制。
跨区域副本适用于以下情况:您希望在另一个地理位置为用户提供距离更近的读取服务;您需要在另一个区域准备一个可随时 Promote 的温备 DR 副本;或者您希望将分析查询从生产环境卸载出去。
# Create a cross-region Read Replica
aws rds create-db-instance-read-replica \
--db-instance-identifier mydb-replica-eu \
--source-db-instance-identifier arn:aws:rds:us-east-1:123456789:db:mydb \
--region eu-west-1 \
--db-instance-class db.t3.mediumPromote Read Replica
Promote Read Replica 会断开复制链路,使其成为独立且可写入的主数据库实例。当原主实例不可用时,可以在灾难恢复场景中执行此操作;您也可以将副本升级到不同的数据库引擎版本,并将其用作新的主实例。
Promote 操作不可逆——一旦完成,实例就不能再作为副本使用。在执行 Promote 之前,请确保副本尽可能追上主实例(延迟最小),以尽量减少数据丢失。Promote 完成后,请更新应用程序的连接字符串,使其指向新的主端点。
# Promote a Read Replica to standalone primary
aws rds promote-read-replica \
--db-instance-identifier mydb-replica-1Read Replicas 与多 AZ:考试中的区别
在 SAA-C03 考试中,区分 Read Replicas 和多 AZ 至关重要:
- 如果场景要求提高读取性能或扩展读取能力 → Read Replicas
- 如果场景要求自动故障转移或高可用性 → 多 AZ
- 如果场景同时要求两者 → 主实例使用多 AZ,并搭配 Read Replicas
还请记住:多 AZ 备用实例不处理读取请求;Read Replicas 不提供自动故障转移(对于非 Aurora 副本,您必须手动执行 Promote)。
Aurora Read Replicas 和端点
Aurora 对 Read Replicas 的处理方式不同于标准 RDS。Aurora 使用共享的分布式存储层,因此副本可以访问与主实例相同的底层数据页。这意味着 Aurora 副本的复制延迟极低(通常低于 100 毫秒),并且每个副本都可以处理读取流量。
Aurora 提供读取器端点,可在所有可用的副本实例之间对连接进行负载均衡。您的应用程序连接到读取器端点后,Aurora 会自动分发读取请求。如果某个副本发生故障,系统会将其从读取池中移除,而不会影响该端点。
Aurora 使用 Read Replicas 进行故障转移
在 Aurora 中,如果主实例(写入实例)发生故障,Aurora 会在大约 30 秒内自动将某个 Read Replica Promote 为主实例,速度远快于标准 RDS 多 AZ 故障转移。被 Promote 的副本会立即通过集群写入器端点开始接受写入。
Aurora 支持故障转移优先级层级(0–15),因此您可以控制首先被 Promote 的副本。对于实例规格更大或位于首选 AZ 中的副本,请分配更高的优先级(层级 0)。
读取扩展架构模式
典型的读取扩展架构会通过应用程序负载均衡器或应用程序逻辑路由流量:
- 所有写入操作(
INSERT、UPDATE、DELETE)→ 主数据库端点 - 所有读取操作(
SELECT)→ Read Replica 端点或 Aurora 读取器端点 - 会话缓存和结果缓存 → ElastiCache(进一步减少对副本的读取)
对于负载极高的分析查询,可以考虑 Promote 某个副本,或使用 Aurora 的并行查询功能,将计算任务推送到存储层,从而避免影响生产集群。
监控 Read Replicas
Read Replicas 的主要 CloudWatch 指标包括:
ReplicaLag— 落后于主实例的秒数;如果该数值意外增长,请发出警报ReadIOPS— 确保副本存储能够跟上查询负载DatabaseConnections— 确保副本未达到连接容量上限CPUUtilization— 副本 CPU 使用率较高表示需要优化查询
Read Replicas 支持 RDS Performance Insights,该功能会显示消耗数据库时间最多的 SQL 语句,帮助您识别并优化开销较高的读取查询。
Read Replica 使用场景总结
SAA-C03 考试中 RDS Read Replicas 的常见使用场景:
- 报表和分析:在副本上运行耗时较长的
SELECT查询,避免减慢生产环境中的写入操作 - 地理分布:跨区域副本以更低的延迟为其他大洲的用户提供服务
- 灾难恢复:如果主区域发生故障,可以 Promote 跨区域副本
- 开发/测试:Promote 副本,使用当前的生产数据副本创建测试环境
Read Replicas 不能替代备份——请始终独立维护自动备份和手动快照。
快速检查
请测试您对本课 AWS Solutions Architect(SAA-C03)概念的理解。
课程回顾
本课您学到了:Read Replicas 使用异步复制来分发读取流量;复制延迟意味着副本可能会略微落后于主实例;Aurora 副本的延迟极低,并支持自动 Promote。跨区域副本同时提供全球读取扩展能力和 DR 选项。接下来,我们将探讨使用加密和参数组实现的 RDS 安全性。
常见问题解答
「用于读取扩展的只读副本」课时是免费的吗?
是的 — 「用于读取扩展的只读副本」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 AWS Solutions Architect 课程的其余内容,请升级到 CoddyKit PRO。 AWS Solutions Architect 课程共包含 4 节课。
「用于读取扩展的只读副本」这节课中我会学到什么?
创建只读副本以分担读取流量,了解异步复制延迟,并将副本提升用于 DR。 你通过在浏览器中直接运行的动手代码来练习 AWS Solutions Architect,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 AWS Solutions Architect 需要有经验吗?
无需任何先前经验。CoddyKit 上的 AWS Solutions Architect 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 3 节课,共 4 节。
「用于读取扩展的只读副本」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 AWS Solutions Architect 课中编写并运行代码吗?
能。每节 AWS Solutions Architect 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- RDS 引擎与实例类别
- 多可用区与自动备份
- 用于读取扩展的只读副本
- RDS 安全性:加密与参数组