AWS Aurora MySQL 读写分离:配置 Reader 实例权重实现 SQL 流量按比例分发
·
AWS Aurora MySQL 读写分离:配置 Reader 实例权重实现 SQL 流量按比例分发
在 Aurora MySQL 中,通过设置 Reader 实例权重可实现读请求的按比例分发。权重值决定各 Reader 实例接收读流量的相对比例(例如权重 70 和 30 表示 7:3 的流量分配)。以下是完整配置流程:
一、核心原理
- 读写分离架构:
- Writer 实例处理写请求
- Reader 实例处理读请求
- 通过 Reader Endpoint 自动分发读流量
- 权重算法:
- 设第 $i$ 个 Reader 实例权重为 $w_i$
- 该实例接收流量比例为: $$ \text{流量比例} = \frac{w_i}{\sum_{k=1}^{n} w_k} $$
- 例如:权重 60 和 40 时,流量分配为 60% 和 40%
二、配置步骤(AWS 控制台)
- 进入 RDS 控制台:
- 导航到 Aurora 集群 > 选择目标 Reader 实例
- 修改实例配置:
- 点击 "修改" 按钮
- 在 "连接处理" 部分找到 "权重" 参数
- 输入整数权重值(0-100):
0:不接收流量(维护模式)100:最高权重
- 示例:为两个 Reader 设置权重
实例名 权重值 流量占比 reader-inst-1 70 70% reader-inst-2 30 30%
- 保存并应用:
- 选择 "立即应用"
- 变更在 30 秒内生效(无需重启)
三、AWS CLI 配置
# 修改实例权重
aws rds modify-db-instance \
--db-instance-identifier reader-inst-1 \
--weight 70
# 验证配置
aws rds describe-db-instances \
--db-instance-identifier reader-inst-1 \
--query "DBInstances[0].{Weight:Weight}"
输出示例:
{
"Weight": 70
}
四、应用层连接方式
在应用程序中,使用 Reader Endpoint 连接数据库:
# Python 示例
import mysql.connector
config = {
"host": "your-cluster.cluster-ro-xxxxxx.rds.amazonaws.com", # Reader Endpoint
"user": "app_user",
"password": "your_password",
"database": "your_db"
}
# 所有读请求自动按权重分发
conn = mysql.connector.connect(**config)
五、注意事项
- 权重动态调整:
- 修改权重实时生效
- 新增 Reader 实例时自动加入负载均衡
- 故障转移:
- 权重为 0 的实例不参与流量分发
- 若活动实例故障,流量自动转移至其他实例
- 监控指标:
- 通过 CloudWatch 监控:
ReaderDBConnections:各实例连接数NetworkThroughput:流量验证
- 通过 CloudWatch 监控:
- 版本要求:
- 需 Aurora MySQL 2.09.1 或更高版本
- 检查引擎版本:
SHOW AURORA VERSION;
实践建议:
首次配置时按 1:1 设置权重,通过 CloudWatch 观察负载后逐步调整。对于计算密集型查询,可分配更高权重到高性能实例。
更多推荐
所有评论(0)