更新时间:2025-08-07 GMT+08:00
分享

RDS for MySQL数据库代理简介

数据库代理是RDS for MySQL和应用服务之间的网络代理服务,用于代理应用服务访问RDS for MySQL的所有请求。

读写分离是指通过数据库代理地址实现读写请求的自动转发。创建RDS for MySQL实例后,您可以开通数据库代理,通过代理地址,写请求自动访问主实例,读请求按照数据库代理的路由模式分发到各个实例,进行读写分离,降低主实例的负载。

介绍视频

基本概念

读写分离原理

RDS for MySQL支持开通一个或多个数据库代理。

一个RDS for MySQL实例下只有1个数据库代理实例,应用服务通过数据库代理地址连接到数据库代理实例,写请求通过数据库代理实例自动转发到主节点,读请求根据数据库代理实例的路由模式转发至主节点或只读节点。

图1 单个数据库代理原理图

一个RDS for MySQL实例下可以创建多个数据库代理实例,最多支持创建4个代理实例,主要适用于有隔离需求的复杂业务。不同的应用服务可以根据业务需要连接不同的数据库代理,数据库代理连接指定的只读节点,将不同应用服务之间的读请求最终转发到不同的只读节点上,实现业务隔离。

图2 多个数据库代理原理图

读写分离优势

  • 相比在应用程序内手动做读写分离,扩容灵活,维护成本低。
  • 客户端读请求按权重分发至后端只读节点,数据库实例整体负载更加均衡,提升资源利用率。
  • 通过代理将指定业务的读请求路由到选定的只读实例上,实现业务隔离,避免多个业务之间相互影响。
  • 数据库代理默认提供过载保护功能:避免用户执行大结果集操作时,因压力过大引起服务端OOM。该功能默认打开,不需要用户单独设置。数据库内核压力较大时,需要依赖数据库本身的限流机制。

请求路由规则

计费说明

购买数据库实例后可以选择开启数据库代理,开启后单独对数据库代理计费。

数据库代理服务已经正式商用,数据库代理服务按照节点计费,控制台购买数据库代理实例时,默认创建2个节点,总费用=节点数*节点单价。代理规格单价请参见RDS价格详情中的数据库代理价格。

相关文档