Aurora多写负载均衡难题咨询:是否需转回RDS实现多实例负载?
问题解答
一、Aurora 解决方案
Aurora 原生单主架构仅支持读副本负载均衡,但针对多写场景,你可以使用 Aurora Multi-Master 集群,这是专门为多写负载设计的架构:
- 核心特性:集群内可部署多个主实例,所有实例均能处理读写请求,无需区分 Writer/Reader 端点
- 流量转发:直接使用集群端点连接,Aurora 会自动在多个主实例间负载均衡写(及读)流量,无需手动拆分应用请求
- 配置要点:创建 Aurora 集群时选择 Multi-Master 模式(支持 MySQL 和 PostgreSQL 兼容版),确保实例规格一致,集群会自动同步数据并处理冲突
你之前尝试自定义端点失败,是因为自定义端点默认关联读副本,而 Multi-Master 集群的所有实例都是主节点,直接用集群端点即可满足99%写操作的需求。
二、转回 RDS 实现多实例写负载均衡
RDS 原生不支持多主集群,需手动搭建主主复制 + 负载均衡层来实现:
1. 搭建 RDS 多主复制集群(以 MySQL 为例)
- 创建第一个 RDS 实例,开启 binlog(参数组中设置
log_bin=1、server-id=1),创建复制专用账号并授权 - 创建第二个 RDS 实例,设置不同的
server-id(如2),同样开启 binlog - 在两个实例间配置双向复制:分别在对方实例中执行
CHANGE MASTER TO命令,指定对方的端点、复制账号和 binlog 位置 - 调整自增参数避免主键冲突:设置
auto_increment_offset为实例序号(如1和2),auto_increment_increment=2
2. 配置负载均衡层
- 使用 AWS NLB(网络负载均衡器,适配数据库TCP流量),创建监听端口(如3306)
- 创建目标组,将所有 RDS 主实例加入目标组,配置健康检查(例如执行
SELECT 1验证数据库可用性) - 应用连接到 NLB 的端点,NLB 会自动将写请求分发到健康的 RDS 主实例
3. 注意事项
- 需确保多主复制的一致性,避免数据冲突(如限制单表的写入来源,或使用乐观锁)
- 定期监控复制延迟,及时处理异常实例
- 如果是 PostgreSQL,可使用双向流复制或 pgpool-II 中间件辅助实现多写负载均衡
内容的提问来源于stack exchange,提问作者Sultan Muhammad
相关产品推荐
相关产品推荐

