aws-doc/课程/第二阶段-核心服务/第14天-RDS托管数据库.md
2026-05-08 10:24:39 +08:00

6.5 KiB
Raw Blame History

第14天RDS——托管关系型数据库

今天你将学到什么

今天学习 RDSRelational Database ServiceAWS 的托管数据库服务。简单说就是AWS 帮你装好数据库、帮你备份、帮你打补丁、帮你做高可用,你只管用。


为什么不自己装数据库

你完全可以在 EC2 上自己安装 MySQL。但这意味着你要负责

你要做的事 频率 难度
安装数据库软件 一次
配置参数调优 偶尔
定期备份 每天
测试备份能否恢复 每月
打安全补丁 每月
版本升级 每年
配置主从复制(高可用) 一次 很高
主库挂了手动切换 紧急 很高
磁盘快满了扩容 偶尔
监控性能问题 持续

用 RDS 的话:以上所有事情 AWS 帮你做。你只需要关心:

  • 数据库表怎么设计
  • SQL 查询怎么写
  • 应用怎么连接数据库

生活类比:自己装数据库就像自己养一头奶牛(要喂草、挤奶、看病)。用 RDS 就像订牛奶(每天送到门口,你只管喝)。


RDS 支持哪些数据库

数据库引擎 特点 适合场景
MySQL 最流行的开源数据库 Web 应用、博客、电商
PostgreSQL 功能最强的开源数据库 复杂查询、地理数据、JSON 数据
MariaDB MySQL 的社区分支 MySQL 的替代品
Oracle 老牌商业数据库 传统企业应用
SQL Server 微软的数据库 .NET 应用
Aurora AWS 自研,兼容 MySQL/PostgreSQL 性能最好,推荐新项目使用

新手建议:学习用 MySQL 或 PostgreSQL免费、资料多。正式项目推荐 Aurora性能是普通 MySQL 的 5 倍)。


RDS 帮你做了什么

自动备份

  • 每天自动给数据库拍一次"快照"
  • 保留 1-35 天(你设置)
  • 支持时间点恢复:可以恢复到过去任意一秒的状态

举个例子:今天下午 3 点有人误删了一张重要的表。你可以把数据库恢复到下午 2:59 的状态,数据就回来了。

自动打补丁

  • 数据库软件有安全漏洞时AWS 自动帮你更新
  • 在你指定的维护窗口执行(比如每周日凌晨 3 点)
  • 不需要你操心

监控

  • 自动收集 CPU、内存、磁盘、连接数等指标
  • 可以设置告警(比如磁盘使用率超过 80% 就通知你)

高可用Multi-AZ多可用区部署

这是 RDS 最重要的功能之一。

问题:数据库挂了怎么办?

如果你的数据库只有一台,它所在的数据中心停电了、硬盘坏了、或者发生了任何故障,你的整个应用就瘫痪了。

解决方案Multi-AZ

开启 Multi-AZ 后AWS 会自动在另一个可用区创建一个备用数据库

你的应用
    ↓
数据库连接地址DNS
    ↓
┌─────────────────────────────────┐
│  可用区 A主数据库处理所有读写│
│  可用区 B备用数据库实时同步  │
└─────────────────────────────────┘

工作原理

  1. 平时所有读写都走主数据库
  2. 主数据库的每一笔写入都实时同步到备用数据库
  3. 如果主数据库挂了AWS 自动在 60-120 秒内切换到备用数据库
  4. 你的应用不需要改任何代码因为连接地址没变DNS 自动指向新的主库)

你的用户甚至感觉不到数据库切换了。


只读副本Read Replica

问题:数据库读取压力太大怎么办?

很多应用是"读多写少"的——比如电商网站,浏览商品(读)的人远多于下单(写)的人。一台数据库扛不住这么多读取请求。

解决方案:只读副本

创建一个或多个"只读副本",专门处理读取请求:

你的应用
├── 写操作(下单、修改资料)→ 主数据库
└── 读操作(浏览商品、查看订单)→ 只读副本 1 / 只读副本 2

特点

  • 数据从主库异步复制到只读副本(有轻微延迟,通常几毫秒)
  • 最多可以创建 5 个只读副本Aurora 可以 15 个)
  • 可以跨 Region 创建(让全球用户就近读取)

Multi-AZ vs 只读副本

Multi-AZ 只读副本
目的 高可用(防故障) 性能扩展(分担读取压力)
能否读取 不能(纯备份) 能(专门用来读)
数据同步 同步(实时) 异步(有轻微延迟)
故障切换 自动 需要手动提升为主库
跨 Region 不支持 支持

两者可以同时使用Multi-AZ 保证不挂,只读副本保证不慢。


AuroraAWS 的王牌数据库

Aurora 是 AWS 自己重新设计的数据库引擎,兼容 MySQL 和 PostgreSQL意味着你的代码不用改但性能和可靠性远超标准版本。

Aurora 的优势

  • 性能是标准 MySQL 的 5 倍
  • 存储自动增长10GB 到 128TB不需要预设
  • 数据自动复制 6 份,分布在 3 个可用区
  • 即使丢失 2 份数据仍可写入,丢失 3 份仍可读取

Aurora Serverless

  • 自动根据负载调整计算能力
  • 没有请求时可以缩到 0不收计算费
  • 适合流量不稳定的应用、开发测试环境

安全配置

  • 放在私有子网:数据库不应该有公网 IP只允许应用服务器访问
  • 安全组只开放数据库端口MySQL 3306PostgreSQL 5432给应用服务器
  • 加密:启用存储加密和传输加密
  • 不要用 Root 密码连接:创建专用的数据库用户,给最小权限

今天的小测验

  1. 用 RDS 和自己在 EC2 上装数据库,最大的区别是什么?
  2. Multi-AZ 解决什么问题?只读副本解决什么问题?
  3. 为什么 Multi-AZ 的备用数据库不能用来读取数据?
  4. Aurora 相比普通 MySQL RDS 有什么优势?

延伸阅读


明天预告

明天学习 DynamoDB——AWS 的 NoSQL 数据库。它和 RDS 完全不同:没有表结构、没有 SQL、但能处理每秒数百万次请求且延迟稳定在个位数毫秒。