最近更新时间:2026-01-12 22:24:55
读写分离(Read-Write Splitting)是一种常见的数据库性能优化与扩展策略。通过数据库代理对 SQL 请求进行自动识别,将读请求(SELECT)与写请求(INSERT / UPDATE / DELETE)分发至不同的数据库节点(详见:请求转发逻辑),从而提升系统的整体性能、扩展能力和可用性。
该机制尤其适用于 读多写少 的业务场景,可有效缓解主实例的读取压力。
数据库代理在代理连接地址层面对请求进行解析和路由:写请求统一转发至主实例执行,读请求根据转发策略分配至各个只读实例,实现读写请求的自动分流,从而降低主实例负载并提升系统吞吐能力。
1)统一接入点,简化架构管理
在未启用读写分离的情况下,应用需分别维护主实例与多个只读实例的连接信息,增加了配置和运维复杂度。
通过 RDS 数据库代理服务,应用仅需配置一个统一的代理连接地址,即可实现读写请求的智能路由。该方案对应用完全透明,并支持通过横向扩展只读实例数量来提升系统整体吞吐能力。
2)灵活配置权重与阈值,满足多样化业务需求
支持按需设置主实例及各只读实例的读流量权重和相关阈值,实现精细化的流量调度与负载控制,适配不同业务场景的性能需求。
3)实例健康检查,提升系统可用性
数据库代理内置实例健康监测机制,持续检测各节点运行状态。当检测到实例异常或故障时,系统将自动隔离异常节点并重新分配流量;待实例恢复后,可自动将其重新纳入服务集群,确保业务连续性与高可用性。
说明:为避免单点故障并提升系统可用性,建议为每个主实例至少配置两个只读实例。
数据库代理会根据 SQL 类型、事务状态及上下文信息,对请求进行智能路由。默认情况下,写请求及对一致性要求较高的读请求将被路由至主实例,其余可安全分离的读请求则路由至只读实例或主实例。
只发往主实例 | 发往只读实例或主实例 | 总是发往所有实例 |
|
|
|
支持在 高可用版 和 单机版 中使用读写分离功能(需搭配只读实例)。开通数据库代理后,实例将自动启用读写分离,无需手动配置。
高可用版:实例备节点不可访问,需要先创建至少一个 MySQL 只读实例,再开通数据库代理,方可实现读写分离。
单机版:实例无备节点,同样需要先创建至少一个 MySQL 只读实例,再开通数据库代理。
开通读写分离功能后,您还可以进行以下操作:
设置读写属性与读权重:调整代理连接地址的读写属性及各节点的读权重,实现业务隔离和负载均衡。
设置连接池属性:根据业务需求选择使用事务连接池或会话连接池,优化连接复用与资源利用。
开启或关闭延迟剔除功能:当没有可用只读实例时,是否自动将只读请求路由至主实例执行,以保障业务可用性。
纯净模式
