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后,接下来可以:

  1. VPC基础 - 学习网络配置
  2. Web应用部署 - 实践数据库应用
  3. 微服务架构 - 学习微服务架构
最后更新:2026-03-28