RDS关系数据库 #

一、RDS概述 #

1.1 什么是RDS #

Amazon RDS(Relational Database Service)是AWS提供的关系数据库托管服务,支持多种数据库引擎,自动化管理数据库管理任务。

1.2 RDS特点 #

text
RDS核心特点:
├── 完全托管
│   ├── 自动备份
│   ├── 软件补丁
│   ├── 操作系统维护
│   └── 数据库更新
│
├── 高可用
│   ├── 多可用区部署
│   └── 自动故障转移
│
├── 可扩展
│   ├── 存储自动扩展
│   └── 只读副本
│
├── 安全
│   ├── 网络隔离
│   ├── 加密
│   └── IAM认证
│
└── 多引擎支持
    ├── MySQL
    ├── PostgreSQL
    ├── MariaDB
    ├── Oracle
    ├── SQL Server
    └── Aurora

1.3 支持的数据库引擎 #

引擎 版本 适用场景
MySQL 5.7, 8.0 Web应用、电商
PostgreSQL 12-16 企业应用、GIS
MariaDB 10.5-10.11 开源应用
Oracle 12c-19c 企业应用
SQL Server 2016-2022 Windows应用
Aurora MySQL/PostgreSQL兼容 云原生应用

二、创建RDS实例 #

2.1 创建步骤 #

text
创建RDS实例步骤:
├── 第一步:选择引擎
│   └── 选择数据库类型
│
├── 第二步:选择模板
│   ├── 生产
│   ├── 开发/测试
│   └── 免费套餐
│
├── 第三步:设置标识
│   ├── 数据库实例标识符
│   ├── 主用户名
│   └── 主密码
│
├── 第四步:实例配置
│   ├── 实例类
│   └── 存储类型
│
├── 第五步:连接配置
│   ├── VPC
│   ├── 子网组
│   └── 安全组
│
├── 第六步:其他配置
│   ├── 参数组
│   ├── 选项组
│   └── 备份设置
│
└── 第七步:创建数据库

2.2 通过CLI创建 #

bash
aws rds create-db-instance \
    --db-instance-identifier mydb \
    --db-instance-class db.t3.micro \
    --engine mysql \
    --engine-version 8.0 \
    --master-username admin \
    --master-user-password MyPassword123 \
    --allocated-storage 20 \
    --vpc-security-group-ids sg-12345678 \
    --db-subnet-group-name my-db-subnet-group \
    --backup-retention-period 7

2.3 实例类型 #

text
RDS实例类型:
├── T系列(突发性能)
│   ├── db.t3.micro
│   ├── db.t3.small
│   └── db.t3.medium
│
├── M系列(通用型)
│   ├── db.m5.large
│   ├── db.m5.xlarge
│   └── db.m5.2xlarge
│
├── R系列(内存优化)
│   ├── db.r5.large
│   ├── db.r5.xlarge
│   └── db.r5.2xlarge
│
└── X系列(超大内存)
    └── db.x1e.xlarge

2.4 存储类型 #

存储类型 说明 适用场景
gp2 通用SSD 大多数工作负载
gp3 通用SSD(新版) 更高性价比
io1 预配置IOPS 高IOPS需求
io2 预配置IOPS(新版) 关键业务

三、连接RDS #

3.1 获取连接信息 #

text
连接信息:
├── 终端节点
│   └── mydb.xxxxx.us-east-1.rds.amazonaws.com
│
├── 端口
│   ├── MySQL: 3306
│   ├── PostgreSQL: 5432
│   └── SQL Server: 1433
│
├── 用户名
│   └── 创建时设置
│
└── 数据库名
    └── 默认或创建时指定

3.2 MySQL连接示例 #

bash
mysql -h mydb.xxxxx.us-east-1.rds.amazonaws.com -P 3306 -u admin -p

3.3 PostgreSQL连接示例 #

bash
psql -h mydb.xxxxx.us-east-1.rds.amazonaws.com -p 5432 -U admin -d mydb

3.4 应用程序连接 #

python
import mysql.connector

conn = mysql.connector.connect(
    host='mydb.xxxxx.us-east-1.rds.amazonaws.com',
    port=3306,
    user='admin',
    password='MyPassword123',
    database='mydb'
)

cursor = conn.cursor()
cursor.execute('SELECT * FROM users')
for row in cursor:
    print(row)
conn.close()

四、高可用配置 #

4.1 多可用区部署 #

text
多可用区架构:
┌─────────────────────────────────────────────────────────────┐
│                          Region                              │
│  ┌──────────────────┐         ┌──────────────────┐          │
│  │       AZ1        │         │       AZ2        │          │
│  │  ┌────────────┐  │         │  ┌────────────┐  │          │
│  │  │   主实例   │  │ ─同步─> │  │   备用实例  │  │          │
│  │  │  (Active)  │  │         │  │  (Standby) │  │          │
│  │  └────────────┘  │         │  └────────────┘  │          │
│  └──────────────────┘         └──────────────────┘          │
└─────────────────────────────────────────────────────────────┘

4.2 启用多可用区 #

bash
aws rds modify-db-instance \
    --db-instance-identifier mydb \
    --multi-az \
    --apply-immediately

4.3 故障转移 #

text
故障转移特点:
├── 自动故障转移
├── 通常60-120秒完成
├── 终端节点保持不变
├── 备用实例提升为主实例
└── DNS自动更新

五、只读副本 #

5.1 只读副本概述 #

text
只读副本特点:
├── 主实例的只读副本
├── 异步复制
├── 分担读取负载
├── 可提升为独立实例
├── 可跨区域
└── 最多5个只读副本

5.2 创建只读副本 #

bash
aws rds create-db-instance-read-replica \
    --db-instance-identifier mydb-replica \
    --source-db-instance-identifier arn:aws:rds:us-east-1:123456789012:db:mydb

5.3 只读副本架构 #

text
只读副本架构:
                    ┌─────────────────┐
                    │    应用程序      │
                    └────────┬────────┘
                             │
              ┌──────────────┼──────────────┐
              │              │              │
              ▼              ▼              ▼
       ┌──────────┐   ┌──────────┐   ┌──────────┐
       │  主实例   │   │ 只读副本1 │   │ 只读副本2 │
       │ (读写)   │   │  (只读)  │   │  (只读)  │
       └──────────┘   └──────────┘   └──────────┘
              │              ▲              ▲
              └──────────────┴──────────────┘
                    异步复制

六、备份与恢复 #

6.1 自动备份 #

text
自动备份特点:
├── 每日自动备份
├── 保留期1-35天
├── 时间点恢复
├── 自动清理过期备份
└── 存储在S3

6.2 手动快照 #

bash
aws rds create-db-snapshot \
    --db-snapshot-identifier mydb-snapshot \
    --db-instance-identifier mydb

6.3 从快照恢复 #

bash
aws rds restore-db-instance-from-db-snapshot \
    --db-instance-identifier mydb-restored \
    --db-snapshot-identifier mydb-snapshot

6.4 时间点恢复 #

bash
aws rds restore-db-instance-to-point-in-time \
    --source-db-instance-identifier mydb \
    --target-db-instance-identifier mydb-restored \
    --restore-time 2024-01-01T12:00:00Z

七、参数组 #

7.1 参数组概述 #

text
参数组类型:
├── 默认参数组
│   └── AWS提供的默认配置
│   └── 不可修改
│
└── 自定义参数组
    └── 用户创建
    └── 可修改参数

7.2 创建参数组 #

bash
aws rds create-db-parameter-group \
    --db-parameter-group-name my-param-group \
    --db-parameter-group-family mysql8.0 \
    --description "My custom parameter group"

7.3 修改参数 #

bash
aws rds modify-db-parameter-group \
    --db-parameter-group-name my-param-group \
    --parameters "ParameterName=max_connections,ParameterValue=500,ApplyMethod=immediate"

7.4 常用参数 #

参数 说明 默认值
max_connections 最大连接数 151
innodb_buffer_pool_size 缓冲池大小 128MB
slow_query_log 慢查询日志 OFF
long_query_time 慢查询阈值 10秒

八、安全配置 #

8.1 网络安全 #

text
网络安全配置:
├── VPC部署
│   └── 数据库在私有子网
│
├── 安全组
│   └── 限制访问来源IP
│
├── 网络ACL
│   └── 子网级别控制
│
└── 私有访问
    └── 无公网IP

8.2 加密 #

text
加密选项:
├── 静态加密
│   ├── 使用KMS
│   ├── 创建时启用
│   └── 加密存储、备份、日志
│
└── 传输加密
    ├── SSL/TLS连接
    └── 强制SSL连接

8.3 IAM认证 #

bash
aws rds modify-db-instance \
    --db-instance-identifier mydb \
    --enable-iam-database-authentication

九、监控 #

9.1 CloudWatch指标 #

指标 说明
CPUUtilization CPU使用率
FreeableMemory 可用内存
FreeStorageSpace 可用存储空间
ReadIOPS 读取IOPS
WriteIOPS 写入IOPS
DatabaseConnections 数据库连接数
ReadLatency 读取延迟
WriteLatency 写入延迟

9.2 增强监控 #

text
增强监控特点:
├── 实时指标
├── 1-60秒粒度
├── 操作系统级别指标
└── 额外费用

9.3 性能洞察 #

text
性能洞察特点:
├── 数据库负载分析
├── SQL语句分析
├── 等待事件分析
├── 可视化界面
└── 快速定位性能问题

十、RDS最佳实践 #

10.1 性能优化 #

text
性能建议:
├── 选择合适的实例类型
├── 配置足够的IOPS
├── 优化查询和索引
├── 使用只读副本分担读取
├── 合理设置连接池
└── 监控性能指标

10.2 安全最佳实践 #

text
安全建议:
├── 部署在私有子网
├── 使用安全组限制访问
├── 启用加密
├── 使用强密码
├── 定期轮换密码
├── 启用审计日志
└── 使用IAM认证

10.3 成本优化 #

text
成本优化建议:
├── 选择合适的实例类型
├── 使用预留实例
├── 合理配置存储
├── 删除不需要的实例
├── 管理快照保留
└── 使用存储自动扩展

十一、小结 #

本章介绍了RDS关系数据库:

内容 要点
RDS概念 托管关系数据库服务
引擎支持 MySQL、PostgreSQL等
高可用 多可用区、只读副本
备份 自动备份、手动快照
安全 网络隔离、加密、IAM认证

下一步学习 #

了解RDS后,接下来可以:

  1. DynamoDB - 学习NoSQL数据库
  2. Aurora - 学习云原生数据库
  3. Web应用部署 - 实践数据库应用
最后更新:2026-03-28