Aurora云原生数据库 #
一、Aurora概述 #
1.1 什么是Aurora #
Amazon Aurora是AWS设计的云原生关系数据库,与MySQL和PostgreSQL兼容。它提供比标准MySQL高5倍、比PostgreSQL高3倍的性能,同时提供企业级可用性和安全性。
1.2 Aurora特点 #
text
Aurora核心特点:
├── 高性能
│ ├── MySQL兼容版性能提升5倍
│ ├── PostgreSQL兼容版性能提升3倍
│ └── 毫秒级延迟
│
├── 高可用
│ ├── 跨3个可用区复制
│ ├── 99.99%可用性
│ └── 自动故障转移
│
├── 高耐久
│ ├── 6份数据副本
│ └── 99.99999999%耐久性
│
├── 存储自动扩展
│ ├── 自动增长
│ └── 最高128TB
│
├── 兼容性
│ ├── MySQL 5.7/8.0兼容
│ └── PostgreSQL 12-15兼容
│
└── 完全托管
├── 自动备份
├── 自动补丁
└── 自动扩展
1.3 Aurora vs RDS #
| 特性 | Aurora | RDS |
|---|---|---|
| 性能 | 更高 | 标准 |
| 存储 | 自动扩展 | 需预置 |
| 复制 | 最多15个只读副本 | 最多5个只读副本 |
| 故障转移 | 更快(通常<30秒) | 60-120秒 |
| 成本 | 较高 | 较低 |
| 兼容性 | MySQL/PostgreSQL | 多种引擎 |
二、Aurora架构 #
2.1 存储架构 #
text
Aurora存储架构:
┌─────────────────────────────────────────────────────────────┐
│ Region │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ AZ1 │ │ AZ2 │ │ AZ3 │ │
│ │ ┌────┐ │ │ ┌────┐ │ │ ┌────┐ │ │
│ │ │副本1│ │ │ │副本2│ │ │ │副本3│ │ │
│ │ └────┘ │ │ └────┘ │ │ └────┘ │ │
│ │ ┌────┐ │ │ ┌────┐ │ │ ┌────┐ │ │
│ │ │副本4│ │ │ │副本5│ │ │ │副本6│ │ │
│ │ └────┘ │ │ └────┘ │ │ └────┘ │ │
│ └──────────┘ └──────────┘ └──────────┘ │
│ Aurora存储卷 │
└─────────────────────────────────────────────────────────────┘
2.2 集群架构 #
text
Aurora集群架构:
┌─────────────────────────────────────────────────────────────┐
│ Aurora集群 │
│ │
│ ┌─────────────────┐ │
│ │ 集群端点 │ ← 主端点(读写) │
│ └────────┬────────┘ │
│ │ │
│ ┌────────┴────────┐ │
│ │ 主实例 │ ← 读写在主实例 │
│ │ (读/写) │ │
│ └─────────────────┘ │
│ │ │
│ │ 复制 │
│ │ │
│ ┌────────┴────────┐ ┌─────────────────┐ ┌─────────────┐ │
│ │ 只读副本1 │ │ 只读副本2 │ │ 只读副本3 │ │
│ │ (只读) │ │ (只读) │ │ (只读) │ │
│ └─────────────────┘ └─────────────────┘ └─────────────┘ │
│ │
│ ┌─────────────────┐ │
│ │ 读取器端点 │ ← 只读端点(负载均衡) │
│ └─────────────────┘ │
└─────────────────────────────────────────────────────────────┘
2.3 端点类型 #
| 端点类型 | 说明 | 用途 |
|---|---|---|
| 集群端点 | 主实例端点 | 读写操作 |
| 读取器端点 | 只读副本负载均衡 | 只读操作 |
| 实例端点 | 特定实例端点 | 直接访问特定实例 |
| 自定义端点 | 自定义实例组 | 特定工作负载 |
三、创建Aurora集群 #
3.1 创建步骤 #
text
创建Aurora集群步骤:
├── 第一步:选择引擎
│ ├── Aurora MySQL
│ └── Aurora PostgreSQL
│
├── 第二步:选择版本
│ └── 选择兼容版本
│
├── 第三步:数据库功能
│ ├── 生产
│ └── 开发/测试
│
├── 第四步:设置标识
│ ├── 集群标识符
│ ├── 主用户名
│ └── 主密码
│
├── 第五步:实例配置
│ ├── 实例类
│ └── 只读副本数量
│
├── 第六步:连接配置
│ ├── VPC
│ └── 安全组
│
└── 第七步:创建集群
3.2 通过CLI创建 #
bash
aws rds create-db-cluster \
--db-cluster-identifier my-aurora-cluster \
--engine aurora-mysql \
--engine-version 8.0 \
--master-username admin \
--master-user-password MyPassword123 \
--vpc-security-group-ids sg-12345678 \
--db-subnet-group-name my-db-subnet-group
aws rds create-db-instance \
--db-instance-identifier my-aurora-primary \
--db-cluster-identifier my-aurora-cluster \
--db-instance-class db.r5.large \
--engine aurora-mysql
3.3 实例类型 #
text
Aurora实例类型:
├── T系列(突发)
│ ├── db.t3.small
│ └── db.t3.medium
│
├── R系列(内存优化)
│ ├── db.r5.large
│ ├── db.r5.xlarge
│ └── db.r5.2xlarge
│
└── X系列(超大内存)
└── db.x2g.xlarge
四、Aurora Serverless #
4.1 Serverless v2 #
text
Aurora Serverless v2特点:
├── 自动扩展
│ ├── 秒级扩展
│ └── 精细粒度(0.5-128 ACU)
│
├── 按使用付费
│ └── 只为使用的容量付费
│
├── 适合场景
│ ├── 不可预测工作负载
│ ├── 开发测试环境
│ └── 新应用
│
└── 兼容性
└── 与预置实例功能相同
4.2 创建Serverless集群 #
bash
aws rds create-db-cluster \
--db-cluster-identifier my-serverless-cluster \
--engine aurora-mysql \
--engine-mode serverless \
--scaling-configuration MinCapacity=1,MaxCapacity=16
五、读写分离 #
5.1 连接端点 #
python
import mysql.connector
writer_conn = mysql.connector.connect(
host='my-cluster.cluster-xxxxx.us-east-1.rds.amazonaws.com',
user='admin',
password='password',
database='mydb'
)
reader_conn = mysql.connector.connect(
host='my-cluster.cluster-ro-xxxxx.us-east-1.rds.amazonaws.com',
user='admin',
password='password',
database='mydb'
)
5.2 读写分离策略 #
text
读写分离建议:
├── 写操作
│ └── 使用集群端点
│
├── 读操作
│ └── 使用读取器端点
│
├── 一致性要求高的读
│ └── 使用集群端点
│
└── 大批量查询
└── 使用特定实例端点
六、高可用与故障转移 #
6.1 自动故障转移 #
text
故障转移特点:
├── 自动检测故障
├── 通常30秒内完成
├── 只读副本提升为主实例
├── 端点自动切换
└── 无需修改应用配置
6.2 故障转移优先级 #
text
故障转移优先级设置:
├── 0(最高)- 15(最低)
├── 同优先级按实例大小
└── 可手动设置
6.3 多主集群 #
text
多主集群特点:
├── 多个主实例
├── 所有实例可读写
├── 无单点故障
└── 更高的写入可用性
七、备份与恢复 #
7.1 自动备份 #
text
自动备份特点:
├── 自动快照
├── 保留期1-35天
├── 时间点恢复
├── 跨区域复制
└── 无性能影响
7.2 回溯功能 #
text
回溯特点:
├── 快速恢复到之前状态
├── 无需从快照恢复
├── 秒级恢复
└── 可回溯最多72小时
7.3 克隆 #
text
数据库克隆特点:
├── 快速创建副本
├── 写时复制技术
├── 不占用额外存储
└── 适合开发测试
bash
aws rds restore-db-cluster-to-point-in-time \
--source-db-cluster-identifier my-cluster \
--db-cluster-identifier my-cluster-clone \
--restore-type copy-on-write
八、Aurora Global Database #
8.1 全球数据库概述 #
text
全球数据库特点:
├── 跨区域复制
├── 主区域写入
├── 辅助区域只读
├── 复制延迟<1秒
├── 灾难恢复
└── 本地读取性能
8.2 全球数据库架构 #
text
全球数据库架构:
┌─────────────────────────────────────────────────────────────┐
│ Global Database │
│ │
│ ┌──────────────────┐ ┌──────────────────┐ │
│ │ 主区域 │ │ 辅助区域 │ │
│ │ (us-east-1) │ ─复制─> │ (eu-west-1) │ │
│ │ ┌────────────┐ │ │ ┌────────────┐ │ │
│ │ │ 主实例 │ │ │ │ 只读副本 │ │ │
│ │ └────────────┘ │ │ └────────────┘ │ │
│ │ ┌────────────┐ │ │ ┌────────────┐ │ │
│ │ │ 只读副本 │ │ │ │ 只读副本 │ │ │
│ │ └────────────┘ │ │ └────────────┘ │ │
│ └──────────────────┘ └──────────────────┘ │
└─────────────────────────────────────────────────────────────┘
九、性能优化 #
9.1 性能洞察 #
text
性能洞察功能:
├── 实时性能监控
├── SQL语句分析
├── 等待事件分析
├── 负载分析
└── 快速定位问题
9.2 查询优化 #
text
查询优化建议:
├── 使用适当的索引
├── 优化查询语句
├── 使用连接池
├── 避免全表扫描
└── 使用预编译语句
9.3 参数调优 #
text
常用参数:
├── max_connections
├── innodb_buffer_pool_size
├── innodb_lock_wait_timeout
└── query_cache_type
十、安全配置 #
10.1 网络安全 #
text
网络安全配置:
├── VPC部署
├── 安全组
├── 私有子网
└── IAM认证
10.2 加密 #
text
加密选项:
├── 静态加密
│ └── 使用KMS
│
└── 传输加密
└── SSL/TLS
10.3 IAM数据库认证 #
python
import mysql.connector
import boto3
rds_client = boto3.client('rds')
token = rds_client.generate_db_auth_token(
DBHostname='my-cluster.cluster-xxxxx.us-east-1.rds.amazonaws.com',
Port=3306,
DBUsername='admin'
)
conn = mysql.connector.connect(
host='my-cluster.cluster-xxxxx.us-east-1.rds.amazonaws.com',
user='admin',
password=token,
ssl_ca='rds-ca-2019-root.pem'
)
十一、Aurora最佳实践 #
11.1 架构设计 #
text
架构建议:
├── 使用读取器端点分担读取
├── 合理配置只读副本数量
├── 使用Serverless应对变化负载
├── 使用全球数据库实现灾难恢复
└── 使用克隆加速开发测试
11.2 性能优化 #
text
性能建议:
├── 选择合适的实例类型
├── 启用性能洞察
├── 优化查询和索引
├── 使用连接池
└── 监控性能指标
11.3 成本优化 #
text
成本优化建议:
├── 使用Serverless应对变化负载
├── 合理配置只读副本数量
├── 使用预留实例
├── 监控存储使用
└── 删除不需要的克隆
十二、小结 #
本章介绍了Aurora云原生数据库:
| 内容 | 要点 |
|---|---|
| Aurora概念 | 云原生、高性能、高可用 |
| 架构 | 存储分离、集群架构 |
| Serverless | 自动扩展、按需付费 |
| 全球数据库 | 跨区域复制、灾难恢复 |
| 安全 | 加密、IAM认证 |
下一步学习 #
了解Aurora后,接下来可以:
最后更新:2026-03-28