AWS RDS
Amazon RDS (关系型数据库服务)
第一章:RDS 基础与架构
Amazon RDS 是一种托管的关系型数据库服务,负责备份、软件补丁、自动错误检测和恢复。
- DB 实例限制:每个账号默认最多可拥有 40 个 RDS 实例。
- 基本单位:DB Instance 是云中隔离的数据库环境。
- DB 引擎支持:Aurora, MySQL, MariaDB, PostgreSQL, Oracle, Microsoft SQL Server。
- 自动迁移:支持通过控制台利用 AWS DMS 将 EC2 上的自建数据库自动迁移至 RDS。
第二章:数据库引擎细节与限制
1. MySQL / MariaDB
- 存储引擎:推荐使用 InnoDB(它是唯一支持崩溃恢复的引擎,是 RDS 的强制要求)。
- 表数量限制:对于 MySQL,若使用 PIOPS 或通用存储且容量 >= 200 GiB,限制为 10,000 张表;若容量 < 200 GiB,限制为 1,000 张表。
- 安全特性:支持
validate_password插件强制执行密码策略。
2. Microsoft SQL Server
- 许可模式:支持“包含许可 (License Included)”和“自带许可 (BYOL)”。
- 数据库限制:单个实例支持的数据库数量取决于实例类和可用模式(如 Single-AZ, Multi-AZ DBM/AG),范围从 30 到 100 个不等。
3. Oracle
- 架构支持:支持多租户架构(CDB/PDB)。
- 标识符:使用
ORACLE_SID进行连接。 - 安全集成:支持通过 AWS Secrets Manager 管理主用户密码。
第三章:存储与自动扩展
1. 存储类型
- 通用型 SSD (gp2/gp3):适用于大多数数据库工作负载。
- 预置 IOPS SSD (io1):专为 OLTP 业务设计。MySQL/MariaDB/Postgres/Oracle 支持最高 80,000 IOPS,SQL Server 支持最高 64,000 IOPS。
- 磁性存储 (Magnetic):传统类型,不支持弹性卷,最大 3 TiB 且限 1,000 IOPS。
2. 存储自动扩展 (Storage Auto Scaling)
- 机制:在无停机的情况下,根据工作负载增长自动增加存储容量。
- 限制:SQL Server 在使用磁性存储时不支持此功能。
第四章:高可用性 (Multi-AZ) 深度解析
Multi-AZ 是 RDS 的灾难恢复(DR)解决方案。
- 同步复制:主实例数据实时同步到不同 AZ 的备用实例(Standby)。
- 故障转移触发条件:
- 可用区 (AZ) 停机。
- 主实例发生故障。
- 更改了实例规格(Instance Class)。
- 操作系统进行软件补丁维护。
- 用户手动启动重启(带故障转移选项)。
- 故障转移机制 (Failover Mechanism):
RDS 的故障转移是自动处理的,无需人工干预。当主实例发生故障时,Amazon RDS 会自动将实例的 规范名称记录 (CNAME) 指向备用实例,随后备用实例被提升为新的主实例。这种机制允许应用程序在尽量短的时间内恢复数据库操作。 - 性能注意:备份操作会在备用实例上运行,以消除主实例的 I/O 停顿。
第五章:只读副本 (Read Replicas)
只读副本用于扩展读取性能。
- 异步复制:从主实例异步同步数据。
- 扩展能力:最多支持 5 个只读副本。
- 跨区域能力:支持跨区域只读副本,用于降低全球延迟。
- 备份要求:创建只读副本前,主实例必须开启自动备份(保留期 > 0)。
- 引擎差异:PostgreSQL 使用物理复制;MySQL 和 MariaDB 使用逻辑复制。
- 提升功能:可以将只读副本提升为独立的单实例数据库。
第六章:备份与恢复
- 自动备份 (Automated Backups):
- 捕获整个实例的快照和事务日志。
- 保留期:0(关闭)到 35 天。
- 删除实例时,自动备份会被一并删除,除非手动选择保留。
- 手动快照 (DB Snapshots):
- 由用户触发,存储在 S3。
- 即使删除 DB 实例,手动快照也会永久保留。
- 恢复逻辑:恢复操作总是创建一个带有新终端节点(Endpoint)的新 DB 实例。
第七章:安全性与连接
- IAM 数据库身份验证:适用于 MySQL 和 PostgreSQL,使用 IAM 角色/用户生成的临时令牌登录,无需在应用中存储密码。
- 加密:使用 AWS KMS 密钥。无法在现有的未加密实例上直接开启加密,必须通过“快照 -> 拷贝并加密快照 -> 还原”来转换。
- SSL/TLS:支持加密客户端与数据库之间的传输数据。
- RDS Proxy:
- 建立连接池以减少 CPU/内存开销。
- 将故障转移时间缩短约 66%。
- 增加安全性(支持 Secrets Manager 集成)。
第八章:高级部署与集成
- Blue/Green 部署:创建一个绿色(Staging)环境镜像生产环境,用于安全地测试变更(如引擎升级)。支持存储初始化以缓解“懒加载”导致的性能抖动。
- Zero-ETL 集成:支持将数据从 RDS (PostgreSQL/Oracle) 自动同步到 Amazon Redshift 进行分析,无需构建复杂的 ETL 流。
- 增强监控 (Enhanced Monitoring):
- CloudWatch:从 Hypervisor 层获取指标(如 CPU)。
- 增强监控:通过实例上的 Agent 获取 OS 层的指标(如各进程的 IOPS、延迟、队列深度)。
第九章:最佳实践总结
- DNS TTL:如果应用缓存了 DNS,务必将 TTL 设置为少于 30 秒,否则故障转移后应用可能仍尝试连接旧 IP。
- 性能排查:使用 Performance Insights 可视化分析 SQL 查询导致的等待时间。
- 实例维护:数据库状态显示为
maintenance时,表示正在应用计划内的系统更新。 - 存储预警:务必设置 CloudWatch 报警监控存储空间,避免进入
storage-full这一关键状态。