写点什么

RDS (Relational Database Service) 介绍

作者:Geek_0d4cde
  • 2025-07-22
    北京
  • 本文字数:3648 字

    阅读完需:约 12 分钟

RDS (Relational Database Service) 总结

I. 什么是 RDS?

  • 定义: AWS RDS 是一种托管式关系型数据库服务,它让用户可以更轻松地在云中设置、操作和扩展关系型数据库。

  • 核心优势:

  • 管理型服务: AWS 负责数据库管理(如补丁、备份、故障检测、恢复、硬件配置、OS 安装)。用户无需管理底层服务器。

  • 易于部署和扩展: 几分钟内即可启动,并可按需进行计算和存储的伸缩。

  • 高可用性与持久性: 内置了多种机制确保数据的高可用性和持久性。

  • 安全性: 提供多层安全控制。

  • 成本效益: 按需付费,避免前期投资。

II. RDS 支持的数据库引擎

RDS 支持多种主流关系型数据库引擎,SAA 考试中需要了解其主要特点:


  1. Amazon Aurora:

  2. AWS 专为云设计的关系型数据库,与 MySQL 和 PostgreSQL 兼容。

  3. 性能远超传统数据库(MySQL 5 倍,PostgreSQL 3 倍)。

  4. 高可用、高持久性、自我修复、自动伸缩。

  5. 后面会详细讲解其独特架构。

  6. PostgreSQL

  7. MySQL

  8. MariaDB

  9. Oracle

  10. Microsoft SQL Server

III. RDS 核心特性与概念 (SAA 重点)

1. 高可用性 (High Availability) - Multi-AZ (多可用区)

  • 目的: 提供数据库的高可用性灾难恢复能力。

  • 工作原理:

  • 在主数据库实例发生故障时,自动将数据库切换到不同可用区 (AZ) 中的同步备用副本 (Synchronous Standby Replica)

  • 数据通过同步复制 (Synchronous Replication) 方式从主实例写入备用实例。这意味着在主实例上的任何事务完成前,必须在备用实例上也完成,以确保数据一致性。

  • 自动故障转移 (Automatic Failover): 当主实例出现故障(如硬件故障、网络中断、AZ 故障)时,RDS 会自动将 CName 记录指向备用实例,故障转移时间通常在 1-2 分钟

  • 特点:

  • 不用于读扩展: Multi-AZ 副本不是为了分担读负载,因为它是一个同步的、不可访问的备用实例。

  • 增加写入延迟: 由于同步复制,写入操作需要等待备用实例的确认,可能会略微增加写入延迟。

  • 单 Endpoint: 应用程序通过一个单一的数据库端点连接,故障转移时端点不变。

2. 读副本 (Read Replicas)

  • 目的: 提供数据库的读伸缩能力 (Read Scaling),分担主数据库的读负载。

  • 工作原理:

  • 通过异步复制 (Asynchronous Replication) 方式从主实例同步数据到读副本。这意味着读副本可能会有轻微的滞后。

  • 独立端点: 每个读副本都有自己的独立端点,应用程序可以将读请求发送到这些副本。

  • 特点:

  • 用于读扩展: 最多可创建 15 个读副本(Aurora 更多)。

  • 跨区域: 读副本可以部署在同一区域的不同可用区,也可以部署在不同区域,以提高全球应用的性能。

  • 可提升: 读副本可以被提升为独立数据库实例(提升后将不再与原主实例同步)。

  • 不提供自动故障转移: 如果主实例故障,读副本不会自动升级为主实例。你需要手动将其提升。

  • 可同时是 Multi-AZ: 一个读副本本身也可以配置为 Multi-AZ,以提高其自身的可用性。

【SAA 重点区分】:Multi-AZ vs. Read Replicas

3. 备份与恢复 (Backup & Recovery)

  • 自动化备份 (Automated Backups):

  • 点对点恢复 (Point-in-Time Recovery): RDS 会定期拍摄完整的存储卷快照,并保留事务日志(WAL)。这允许你将数据库恢复到指定的时间点(过去指定天数内的任意 5 分钟粒度时间点)。

  • 备份窗口: 在配置的备份窗口内进行。

  • 保留期: 默认 7 天,最长可配置 35 天。

  • 恢复: 恢复操作会创建一个全新的 RDS 实例。

  • 数据库快照 (DB Snapshots):

  • 手动备份: 用户手动触发创建的完整存储卷快照。

  • 保留: 快照会一直保留,直到你手动删除它。

  • 用途: 长期归档、创建新的开发/测试环境、在进行重大更改前做备份。

  • 恢复: 同样会创建一个全新的 RDS 实例。

4. 安全性 (Security)

  • 网络隔离:

  • VPC (Virtual Private Cloud): RDS 实例通常部署在私有子网中,不直接暴露在互联网上。

  • 安全组 (Security Groups): 充当数据库的防火墙,控制哪些 IP 地址/安全组可以访问数据库的指定端口。这是控制网络访问的最重要手段。

  • IAM (Identity and Access Management):

  • 对 RDS 服务本身的访问: 谁可以创建、修改、删除 RDS 实例。

  • 数据库认证: 部分引擎支持 IAM 数据库认证(例如 Aurora、MySQL、PostgreSQL),通过 IAM 凭证而不是传统密码进行连接。

  • 数据加密:

  • 静止数据加密 (Encryption at Rest):

  • 使用 AWS KMS (Key Management Service) 管理的加密密钥。

  • 注意: 只能在创建实例时启用加密。对于未加密的实例,你需要创建一个加密的快照,然后从该加密快照恢复一个新的加密实例。

  • 所有与该实例关联的备份、快照、读副本都将自动被加密。

  • 传输中数据加密 (Encryption in Transit):

  • 使用 SSL/TLS 连接加密客户端和 RDS 实例之间的数据。

5. 可伸缩性 (Scalability)

  • 计算伸缩 (Compute Scaling):

  • 通过修改 DB 实例类(DB Instance Class)来进行垂直伸缩 (Vertical Scaling)

  • 影响: 导致短暂的停机时间。

  • 存储伸缩 (Storage Scaling):

  • 对于大多数引擎,存储可以动态扩展,无需停机。

  • 你可以设置存储的自动扩展阈值和最大值。

  • 读伸缩 (Read Scaling):

  • 通过创建读副本 (Read Replicas) 实现水平伸缩 (Horizontal Scaling)

6. 维护 (Maintenance)

  • 维护窗口: RDS 会为每个实例定义一个每周的维护窗口,用于执行必要的系统维护(如打补丁、小版本升级)。

  • 用户可以自定义这个窗口,以最小化对业务的影响。

  • 主要版本升级需要手动触发,且通常会导致更长的停机。

7. 监控 (Monitoring)

  • Amazon CloudWatch: 默认集成,提供 CPU 利用率、IOPS、网络吞吐量、空闲存储空间等关键指标。

  • Enhanced Monitoring (增强监控): 提供更细粒度的 OS 级别指标(例如 CPU 负载、内存使用率、进程列表),每 1-60 秒收集一次。

  • Performance Insights (性能详情): 提供 SQL 级别的性能监控,帮助你找出数据库瓶颈的根源(例如,哪些 SQL 语句占用 CPU 最多)。

IV. AWS Aurora - RDS 的旗舰产品 (SAA 难点与重点)

Aurora 是 RDS 家族中的明星产品,其架构和特性与传统 RDS 引擎有显著不同。


  • 云原生架构: 为云而生,存储和计算分离。

  • 存储层 (Aurora Storage):

  • 分布式、共享存储卷: 所有 Aurora 实例(主实例和读副本)共享一个逻辑上单一的、自动伸缩的存储卷,最大可达 128TB。

  • 高持久性与高可用性: 数据被复制到 6 个副本,分布在 3 个可用区中。即使丢失 2 个数据副本,或者一个可用区完全故障,数据仍然可用。

  • 自我修复: 存储层能自动检测和修复磁盘故障。

  • 无需预留 IOPS: 存储 IOPS 按需付费。

  • 计算层 (Aurora Instances):

  • Primary Instance (主实例): 负责读写操作。

  • Aurora Replicas (读副本):

  • 可多达 15 个,通常滞后时间小于 20 毫秒

  • 与主实例共享底层存储。

  • 特别之处: Aurora Replicas 不仅用于读扩展,它们也可以作为高可用性目标。当主实例故障时,其中一个 Aurora Replica 可以被提升为新的主实例,通常在 30 秒内完成故障转移(比 Multi-AZ 更快的恢复时间)。

  • Serverless Aurora (无服务器 Aurora):

  • 按需启动、停止和扩展数据库。

  • 根据工作负载自动调整计算容量。

  • Aurora Serverless v1: 适用于不可预测、间歇性工作负载。

  • Aurora Serverless v2: 旨在支持更广泛的工作负载,包括生产工作负载,支持亚秒级扩展,更细粒度的容量单位。这是当前更推荐使用的版本。

  • Aurora Global Database (全球数据库):

  • 允许一个 Aurora 数据库跨多个 AWS 区域部署。

  • 实现灾难恢复(跨区域的 RPO/RTO 通常在几秒/分钟级别)和低延迟的全球读访问

  • 一个主区域和最多 5 个辅助区域,每个辅助区域可以有自己的读副本。

V. 重点、难点与易错点

  1. Multi-AZ vs. Read Replicas (最常考,最易混淆):

  2. 易错: 认为 Multi-AZ 用于读扩展,或读副本提供自动故障转移。

  3. 正确: Multi-AZ 是 HA/DR,读副本是读扩展。牢记其复制方式(同步 vs. 异步)和用途。

  4. RDS 的加密:

  5. 易错: 认为可以在创建后对未加密的 RDS 实例启用静止数据加密。

  6. 正确: 只能在创建时启用加密。 后期需通过“快照-加密快照-恢复新实例”的流程。加密的快照和读副本会自动保持加密。

  7. RDS 是托管服务,没有 SSH 访问权限:

  8. 易错: 尝试通过 SSH 连接到 RDS 实例的底层 OS。

  9. 正确: AWS 管理操作系统和底层基础设施,用户只有数据库层面的管理权限。

  10. RDS 存储已满问题:

  11. 易错: 认为存储会自动无限扩展。

  12. 正确: 即使支持自动扩展,也有最大限制。当存储接近满载时,可能会导致数据库进入不可用状态。需监控 FreeStorageSpace 指标。

  13. Aurora 的独特架构:

  14. 易错: 将 Aurora 视为只是 RDS 的一个普通引擎,或混淆其存储与传统 RDS 存储。

  15. 正确: 强调其共享存储卷6 个数据副本快速故障转移低延迟读副本以及 Serverless/Global Database 特性。

  16. 主版本升级与小版本升级:

  17. 易错: 认为所有升级都在维护窗口自动完成。

  18. 正确: 小版本升级通常在维护窗口进行(可配置),但主版本升级需要手动操作,且通常会带来更长的停机。

  19. 数据库连接池 (Connection Pooling):

  20. 虽然不是 RDS 本身的功能,但 RDS 经常与 RDS Proxy 结合考察。RDS Proxy 是一个全托管的、高可用的数据库代理,可以帮助管理大量连接,减少数据库的连接负担,提高应用程序弹性。SAA 中可能会问到如何解决大量并发连接导致 DB 性能下降的问题,RDS Proxy 是答案之一。

  21. VPC 和安全组配置:

  22. 易错: 将 RDS 实例放在公共子网或配置错误的安全组。

  23. 正确: RDS 实例应放在私有子网中。安全组只允许来自特定应用服务器或 Jump Box 的流量进入 RDS 端口。

发布于: 刚刚阅读数: 3
用户头像

Geek_0d4cde

关注

还未添加个人签名 2018-02-20 加入

还未添加个人简介

评论

发布
暂无评论
RDS (Relational Database Service) 介绍_Geek_0d4cde_InfoQ写作社区