如果您的主实例负载较高,或在发生主动切换类的运维动作时有防闪断需求,可以使用RDS MySQL数据库代理功能,通过读写分离对业务流量进行负载均衡,降低主实例CPU负载压力,还可以通过连接保持(防止闪断)和SSL加密功能提高实例的可用性和安全性。
RDS MySQL数据库代理是位于数据库服务端和应用服务端之间的网络代理服务,用于代理应用服务端访问数据库时的所有请求。您可以连接数据库代理访问地址使用数据库代理的各项功能,以简化RDS MySQL数据库实例的连接管理。RDS MySQL数据库代理具有高可用、高性能、可运维、简单易用等特点。
适用场景
事务内有大量请求,导致主实例负载过高的场景。
连接数过多导致主实例负载过高的场景。
短连接为主的业务。
有读写分离需求的业务场景。
纯只读和有隔离需求的业务。
发生主动切换类的运维动作时,有防闪断需求的场景。
说明假设您购买了包含1个主实例和4个只读实例的RDS实例,现在需要将A业务(纯只读)和B业务(可读可写)都连接至该实例。您可以将只读实例1和只读实例2组成代理终端A(只读模式)提供给业务A,主实例、只读实例3和只读实例4组成代理终端B(读写模式)提供给业务B,以实现两个业务在数据库使用上的物理隔离,避免相互影响。
基本概念
代理连接地址(原代理终端)
代理连接地址(原代理终端)是数据库代理的核心,支持自定义连接地址访问策略、修改连接地址前缀和端口号等。通过数据库代理连接地址连接RDS实例可以使用数据库代理的高级功能。
开通数据库代理后,每个RDS MySQL 实例最多支持7个代理连接地址(原代理终端),每个代理连接地址可以申请1个内网地址和1个外网地址,支持自定义配置每个代理连接地址的访问策略来满足不同的业务场景,增强业务的灵活性。具体操作,请参见配置数据库代理连接地址访问策略、连接数据库。
读写分离
读写分离指通过代理连接地址实现读写请求的自动转发。
少写多读的应用场景可能会对主实例造成巨大的读取压力,进而影响到业务。读写分离功能可使写请求自动转发到主实例,读请求自动转发到各个只读实例,实现读写请求的自动分流,减轻主实例的压力。更多信息,请参见什么是读写分离。
事务拆分
数据库代理默认开启事务拆分功能,能够将事务内写操作之前的读请求转发到只读实例,降低主实例负载。更多信息,请参见设置事务拆分。
连接池
有效解决连接数过多或短连接业务(例如PHP)频繁建立新连接导致实例负载过高的问题。更多信息,请参见设置连接池。
SSL
对数据库代理连接地址进行SSL加密,可以保证数据的传输安全。具体操作,请参见设置代理SSL加密。
代理类型介绍
RDS MySQL 数据库代理提供两种类型:通用型和独享型。
通用型:共享CPU物理资源,不收取任何费用,更经济。
独享型:独占CPU物理资源,按量计费,具有更好的性能稳定性。
两种类型的差异和支持的功能如下表所示:
对比项 | 通用型 | 独享型 |
计费类型 | 免费 | 按量计费,详情请参见费用说明。 |
资源类型 | 共享CPU物理资源 | 独占CPU物理资源,具有更好的性能稳定性。 |
代理规格 | 最高配置:16核(代理个数 8) | 最高配置:32核(代理个数16) |
配套RDS MySQL实例 | 配套RDS MySQL高可用系列和集群系列的实例 | |
部署架构 | 高可用冗余架构 | |
读写分离 | 支持 | |
事务拆分 | 支持 | |
连接地址(原代理终端) | 支持1~7个代理连接地址(每个代理连接地址支持申请1个内网地址和1个外网地址) | |
连接保持(防闪断) | 支持 | |
连接池 | 支持 | |
SSL加密 | 支持 |
代理个数和代理规格的关系:代理规格=单位代理规格×代理个数
,其中单位代理规格固定为2核CPU。
例如,代理实例的代理个数为3 ,则代理规格为2核×3=6核
。
注意事项
请参见数据库代理注意事项。
费用说明
请参见数据库代理费用说明。
使用方法
请参见使用数据库代理。