如果您的主实例负载较高,或在发生主动切换类的运维动作时有防闪断需求,可以使用RDS MySQL数据库代理功能,通过读写分离对业务流量进行负载均衡,降低主实例CPU负载压力,还可以通过连接保持(防止闪断)和SSL加密功能提高实例的可用性和安全性。
RDS MySQL数据库代理是位于数据库服务端和应用服务端之间的网络代理服务,用于代理应用服务端访问数据库时的所有请求。您可以连接数据库代理访问地址使用数据库代理的各项功能,以简化RDS MySQL数据库实例的连接管理。RDS MySQL数据库代理具有高可用、高性能、可运维、简单易用等特点。
关于RDS数据库代理的使用问题和更多相关信息,欢迎加入用户钉钉群(106730000316)进行咨询、反馈和交流 。
适用场景
有读写分离需求的业务场景。
发生主动切换类的运维动作时或故障场景下,有防闪断需求的场景。
事务内有大量请求,导致主实例负载过高的场景。
连接数过多导致主实例负载过高的场景。
短连接为主的业务。
纯只读和有隔离需求的业务。
说明假设您购买了包含1个主实例和4个只读实例的RDS实例,现在需要将A业务(纯只读)和B业务(可读可写)都连接至该实例。您可以将只读实例1和只读实例2组成代理终端A(只读模式)提供给业务A,主实例、只读实例3和只读实例4组成代理终端B(读写模式)提供给业务B,以实现两个业务在数据库使用上的物理隔离,避免相互影响。
基本概念
代理连接地址(原代理终端)
代理连接地址(原代理终端)是数据库代理的核心,支持自定义连接地址访问策略、修改连接地址前缀和端口号等。通过数据库代理连接地址连接RDS实例可以使用数据库代理的高级功能。
开通数据库代理后,每个RDS MySQL 实例最多支持7个代理连接地址(原代理终端),每个代理连接地址可以申请1个内网地址和1个外网地址,支持自定义配置每个代理连接地址的访问策略,以满足不同的业务场景,增强业务的灵活性。具体操作,请参见配置数据库代理连接地址访问策略、连接数据库。
读写分离
读写分离指通过代理连接地址实现读写请求的自动转发。
少写多读的应用场景可能会对主实例造成巨大的读取压力,进而影响到业务。读写分离功能可使写请求自动转发到主实例,读请求自动转发到各个只读实例,实现读写请求的自动分流,减轻主实例的压力。更多信息,请参见什么是读写分离。
连接保持
RDS MySQL代理的连接保持功能,即在发生实例切换类的操作时,能保持应用程序与代理的连接不断开,用户通过代理地址访问数据库的应用程序不会收到连接断开的报错。更多信息,请参见设置连接保持。
事务拆分
数据库代理默认开启事务拆分功能,能够将事务内写操作之前的读请求转发到只读实例,降低主实例负载。更多信息,请参见设置事务拆分。
连接池
有效解决连接数过多或短连接业务(例如PHP)频繁建立新连接导致实例负载过高的问题。更多信息,请参见设置连接池。
可用区
指代理节点和代理连接地址所在的可用区,建议数据库代理可用区、代理连接地址可用区和RDS实例的可用区保持一致,以减少跨可用区访问带来的网络延迟。开通代理后,支持迁移代理可用区。
就近访问
数据库代理多可用区部署时,开通就近访问功能,支持用户指定应用程序连接到同一可用区内的代理节点,实现应用程序、代理节点、只读节点均在同一可用区,最大程度降低延迟。具体操作,请参见设置就近访问。
SSL加密
对数据库代理连接地址进行SSL加密,可以保证数据的传输安全。具体操作,请参见设置代理SSL加密。
代理部署架构
RDS MySQL数据库代理支持单可用区部署和双可用区部署。
单可用区部署:指所有代理节点位于同一可用区。
双可用区部署:指代理节点位于两个不同可用区,实现跨可用区容灾,不额外收费。
部署形式
代理部署形式包含以下三种:
部署形式1
部署形式2
部署形式3
部署形式 | 可用区 | 代理节点总个数 | 规格限制 | 支持代理类型 |
部署形式1 | 双可用区 | 4 | 同一可用区内,代理节点规格必须一致。 | 独享型 |
部署形式2 | 双可用区 | 2 | 两个节点规格必须一致。 | 独享型、通用型 |
部署形式3 | 单可用区 | 2 | 同一可用区内,代理节点规格必须一致。 | 独享型、通用型 |
开通数据库代理后支持变更代理部署架构,详情请参见变更代理配置。
默认架构及可用区
代理默认架构及可用区遵循以下逻辑:
RDS实例部署形式 | 代理类型 | 默认代理部署形式 | 默认代理可用区 |
单可用区部署 | 独享型 | 部署形式3 | 默认和RDS实例主节点的主可用区保持一致。 |
通用型 | 部署形式3 | ||
双可用区部署 | 独享型 | 部署形式1 |
|
通用型 | 部署形式2 |
代理容灾机制
部署形式1
当发生代理节点级别故障时,故障节点不再承担流量,流量将转发到同一可用区内的其他未发生故障的代理节点。
当发生可用区级别故障时,由于多可用区部署,具备跨可用区容灾的能力,业务流量将转发到未发生故障的可用区代理节点。当故障可用区的代理节点恢复后,新增业务流量将转发到恢复后的代理节点中,存量长连接路由保持不变,等待自动消亡。
说明如果开通了就近访问功能,出于可用性高于访问延迟的考虑,当发生可用区级别故障时就近访问功能可能会失效,优先保障代理实例整体的可用性。
部署形式2
由于代理是双可用区两节点部署,代理节点级别的故障等同于可用区级别的故障,当发生故障时,业务流量将转发到另一个未发生故障的可用区内的代理节点。
部署形式3
当发生代理节点级别故障时,故障节点不再承担流量,业务流量将全部由同一可用区内的另一个未发生故障的代理节点承担。
当发生可用区级别故障时,代理将无法提供服务,需要等可用区机房故障恢复,或手动变更代理到跨可用区部署形式。
代理类型介绍
RDS MySQL 数据库代理提供两种代理类型:通用型和独享型。
通用型:共享CPU物理资源,不收取任何费用,更经济。
独享型:独占CPU物理资源,按量计费,具有更好的性能稳定性。
两种类型的差异和支持的功能如下表所示:
对比项 | 通用型 | 独享型 |
计费类型 | 免费 | 按量计费,详情请参见费用说明。 |
资源类型 | 共享CPU物理资源 | 独占CPU物理资源,具有更好的性能稳定性。 |
代理单节点规格范围 | 1~8核 | 1~16核 |
配套RDS MySQL实例 | 配套RDS MySQL高可用系列和集群系列的实例 | |
部署架构 | 支持部署形式2、3。详情请参见代理部署架构。 | 支持部署形式1、2、3。详情请参见代理部署架构。 |
单可用区部署 | 支持 | |
双可用区部署 | 支持 | |
就近访问 | 不支持 | 支持 |
读写分离 | 支持 | |
事务拆分 | 支持 | |
连接地址(原代理终端) | 单个RDS MySQL实例支持1~7个代理连接地址(每个代理连接地址支持申请1个内网地址和1个外网地址) | |
主动切换的连接保持 | 支持 | 支持 |
故障切换的连接保持 | 不支持 | 支持 |
连接池 | 支持 | |
SSL加密 | 支持 |
代理规格和代理单节点规格的关系:
代理规格 = 所有代理节点规格求和
。例如,独享型双可用区(可用区A + 可用区B)部署代理,可用区A的单节点代理规格CPU为1核,节点个数为2;可用区B的单节点代理规格CPU为2核,节点个数为2,则代理规格 = 可用区A的代理规格 + 可用区B的代理规格 = 1核 x 2 + 2核 x 2 = 2核 + 4核 = 6核
。代理个数和代理规格的关系:
代理个数 = 代理规格 / 单位代理规格
,其中, 单位代理规格固定为2核 CPU。例如,代理实例的代理规格为6核 ,则代理个数 = 6核 / 2核 = 3
。
注意事项
请参见数据库代理注意事项。
费用说明
请参见数据库代理费用说明。
使用方法
请参见使用数据库代理。