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后,接下来可以:
最后更新:2026-03-28