第五阶段:RDS(关系型数据库服务)¶
本章学习目标:
- 理解为什么数据库不应该直接安装在 EC2 上
- 理解什么是托管数据库(Managed Database)
- 掌握 RDS 的核心概念与基本架构
- 能创建一套 RDS 数据库并从 EC2 成功连接
- 建立“计算 / 存储 / 数据”三层分离的架构意识
1. 为什么不直接在 EC2 上安装数据库?¶
在学习阶段,很多人会自然想到:
“我已经有 EC2 了,
直接在上面yum install mysql不就行了吗?”
从技术角度来说,这是可行的;
但从工程和生产角度来看,这是一个非常不推荐的做法。
1.1 EC2 自建数据库需要承担的责任¶
如果你选择在 EC2 上自行安装数据库,你需要自己负责:
- 数据库软件安装与初始化
- 备份策略设计与执行
- 磁盘容量监控与扩容
- 数据库进程异常后的恢复
- 主从复制与高可用设计
- 安全补丁与版本升级
📌 这些工作都与业务功能无关,却是数据库必须长期维护的内容。
1.2 一个必须建立的工程认知¶
数据库不是普通应用程序。
数据库是:
- 系统的核心资产
- 宕机影响最大的组件
- 恢复成本最高的一层
因此,在云环境中:
数据库应优先使用云厂商提供的托管服务。
2. 什么是 RDS?¶
RDS(Relational Database Service)是 AWS 提供的 托管式关系型数据库服务。
可以这样理解:
RDS = AWS 帮你把数据库装好、管好、看好。
你只需要关心:
- 表结构设计
- SQL 语句
- 业务逻辑
2.1 RDS 帮你做了哪些事情?¶
AWS RDS 会自动为你处理:
- 数据库软件安装
- 操作系统维护
- 自动备份
- 故障恢复
- 高可用架构(Multi-AZ)
- 监控与告警
📌 一句话总结:
你管数据,AWS 管数据库。
3. RDS 支持的数据库引擎¶
RDS 支持多种主流关系型数据库:
- MySQL
- PostgreSQL
- MariaDB
- Oracle
- SQL Server
- Aurora(AWS 自研,高性能,进阶内容)
📌 新手阶段建议:
选择 MySQL 或 PostgreSQL 即可。
4. RDS 的核心组成概念(新手重点)¶
在 AWS 中,RDS 不是一个“单一的数据库程序”,
而是一整套由 AWS 托管的数据库运行环境。
当你创建一套 RDS 时,实际上是在同时做几件事:
- 创建一台“数据库专用服务器”
- 选择数据库软件(MySQL / PostgreSQL 等)
- 配置这台服务器的性能
- 配置数据存放方式和容量
- 决定是否启用高可用能力
下面我们逐个拆开说明。
4.1 DB Instance(数据库实例)——数据库运行的“整体实体”¶
4.1.1 DB Instance 是什么?¶
DB Instance(数据库实例)
指的是一套正在运行的、可对外提供服务的数据库环境。
它并不是“只有数据库软件”,而是包含:
- 数据库进程(MySQL / PostgreSQL 等)
- 操作系统(由 AWS 管理)
- 计算资源(CPU / 内存)
- 存储资源(磁盘)
- 网络与安全配置
可以把 DB Instance 理解为:
一台“专门跑数据库的云服务器”,
但你看不到系统,也不需要登录。
4.1.2 DB Instance ≠ 数据库软件(新手易混)¶
很多新手会混淆下面两个概念:
| 概念 | 含义 |
|---|---|
| 数据库引擎 | MySQL / PostgreSQL 等数据库软件 |
| DB Instance | 运行数据库引擎的一整套环境 |
关系可以这样理解:
DB Instance
├─ CPU / 内存
├─ 存储
├─ 操作系统(AWS 管)
└─ 数据库引擎(MySQL / PostgreSQL)
📌 你创建的是 DB Instance,而不是“装一个 MySQL”。
4.1.3 一台 DB Instance 能做什么?¶
一台 DB Instance 可以:
- 创建多个数据库(schema)
- 创建多张表
- 同时被多个应用访问
- 作为整个系统的“数据中心”
4.2 实例规格(Instance Class)—— 数据库的“性能档位”¶
4.2.1 实例规格决定什么?¶
Instance Class 决定的是:
- CPU 性能
- 内存大小
- 并发处理能力
- 能承载的访问压力
你可以把它理解为:
数据库服务器的配置型号(性能档位)
4.2.2 常见实例系列(新手认知版)¶
(1)t 系列(突发型,学习 / 测试)¶
- 代表型号:
db.t3.micro - 特点:
- 平时性能一般
- 短时间可突发使用较高 CPU
- 成本最低
适合场景:
- AWS 学习
- 测试环境
- 低访问量系统
📌 新手阶段首选。
(2)m 系列(通用型,生产常用)¶
- CPU 与内存均衡
- 性能稳定
- 成本适中
适合场景:
- 普通业务系统
- 中小型生产数据库
📌 如果你在真实项目中“不知道选什么”,
m 系列通常是安全选择。
(3)r 系列(内存增强型)¶
- 内存容量大
- 成本较高
适合场景:
- 大数据量
- 内存依赖型业务
📌 新手阶段了解即可,不推荐使用。
4.2.3 学习阶段如何选择实例规格?¶
只需要记住一条原则:
学习 / 实验 →
db.t3.micro或db.t3.small
4.3 存储(Storage)—— 数据库数据存放在哪里¶
4.3.1 RDS 的存储是什么?¶
RDS 的存储用于保存:
- 数据库数据
- 索引
- 日志
- 系统元数据
可以理解为:
数据库专用的云硬盘。
4.3.2 存储类型(学习阶段重点)¶
通用型 SSD(gp2 / gp3)¶
特点:
- 性能与成本平衡
- 支持绝大多数业务
- 默认推荐
📌 新手和大多数项目直接使用默认即可。
4.3.3 存储容量如何选择?¶
- 存储可以扩容,不能缩容
- 初期不必配置过大
学习阶段建议:
- 20GB ~ 30GB 即可
4.3.4 自动扩容(Storage Autoscaling)¶
RDS 支持自动存储扩容:
- 当磁盘空间接近上限时
- 自动扩展容量
作用:
- 防止磁盘写满导致数据库不可用
- 减少人工运维风险
4.4 从整体角度理解 RDS(非常重要)¶
创建 RDS 时,你实际上是在做:
创建 DB Instance
├─ 选择数据库引擎
├─ 选择实例规格(性能)
├─ 选择存储类型与容量
└─ 选择是否开启高可用(Multi-AZ)
📌 RDS 是数据库服务器的整体解决方案,而不是一个软件安装包。
4.5 本小节总结¶
- DB Instance 是一整套数据库运行环境
- Instance Class 决定数据库性能
- 存储决定数据容量与稳定性
- 学习阶段配置应保持简单
- 理解结构比记参数更重要
5. 高可用架构:Multi-AZ(概念级)¶
5.1 什么是 Multi-AZ?¶
Multi-AZ 是 RDS 的高可用部署模式:
- 主库(Primary)
- 备用库(Standby)
- 分布在不同可用区(AZ)
当主库发生故障时:
- 自动切换到备用库
- 应用侧几乎无感知
📌 学习阶段:
理解概念即可,不强制启用。
6. RDS 的网络与安全设计(非常重要)¶
6.1 RDS 应该部署在哪里?¶
标准做法是:
RDS 部署在私网子网(Private Subnet)中。
原因:
- 数据库不应该暴露到公网
- 只允许应用服务器访问
6.2 RDS 如何控制访问?¶
RDS 使用 安全组(Security Group) 控制访问来源。
典型规则:
- 入站规则:
- Type:MySQL / PostgreSQL
- Source:EC2 所属的安全组
📌 不要使用公网 IP 作为来源。
7. 实战:创建第一套 RDS(MySQL 示例)¶
本实战目标:
创建一套 RDS 数据库,并从 EC2 成功连接。
7.1 创建 RDS 实例的关键配置¶
- Engine:MySQL
- Instance class:db.t3.micro
- Storage:默认即可
- Multi-AZ:关闭
- Public access:No
- VPC:与 EC2 相同
- Subnet group:私网子网
7.2 安全组配置(重点)¶
RDS 安全组配置:
- Inbound rule:
- Type:MySQL/Aurora
- Source:EC2 的安全组
📌 使用安全组引用是数据库安全的最佳实践。
7.3 从 EC2 连接 RDS¶
在 EC2 上安装 MySQL 客户端:
sudo yum install -y mysql
连接数据库:
mysql -h <RDS-ENDPOINT> -u admin -p
7.4 验证数据库功能¶
CREATE DATABASE demo;
USE demo;
CREATE TABLE users (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50)
);
INSERT INTO users(name) VALUES ('Alice'), ('Bob');
SELECT * FROM users;
8. 当前完整三层云架构¶
至此,你已经构建完成一个标准的云端三层架构:
前端:CloudFront + S3
后端:EC2 + Nginx + Spring Boot
数据库:RDS(私网)
9. 本章总结¶
- 数据库是系统的核心资产
- 不应将数据库视为普通应用程序
- RDS 显著降低了运维成本
- 三层云架构正式成型
下一阶段:VPC 网络设计
从“能跑”升级为“安全、规范、可扩展”的云架构。