跳转至

第五阶段: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.microdb.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 网络设计
从“能跑”升级为“安全、规范、可扩展”的云架构。