PolarDB数据库代理是位于数据库和应用程序之间的网络代理服务,用于代理应用程序访问数据库时的所有请求,具有高可用、高性能、可运维、简单易用等特点,支持自动读写分离、负载均衡、一致性级别、连接池、过载保护等高级功能。您可以连接PolarDB集群地址使用数据库代理的各项功能。
PolarDB数据库代理介绍
PolarDB集群版是一个由多节点构成的数据库集群,包括一个主节点和多个只读节点。对外默认提供两个地址,分别为主地址和集群地址。其中,集群地址功能由PolarDB数据库代理提供,集群地址分为可读可写(自动读写分离)和只读两种读写模式。
支持两种数据库代理版本
数据库代理企业版提供两种版本:企业通用版和企业独享版。
企业通用版:配套集群子系列的通用规格,它可以共享CPU物理资源。数据库代理的CPU资源不占用集群的CPU资源,其规格默认为对应集群中数据库节点总核数的1/6。
企业独享版:配套集群子系列的独享规格,它可以独占CPU物理资源,具有更好的性能稳定性。数据库代理的CPU资源不占用集群的CPU资源,其规格默认为对应集群中数据库节点总核数的1/4。
两种版本的差异如下表所示:
对比项 | 企业通用版 | 企业独享版 |
计费类型 | 免费 | |
资源类型 | 共享CPU物理资源,可根据业务负载,提供智能秒级资源弹性扩展能力 | 独占物理资源,具有更好的性能稳定性 |
部署架构 | 高可用冗余架构 | |
实例规格 | 最低配置:2核 | |
连接数 | 无限制 | |
IOPS | 集群存储最大IOPS相比历史版本可提升50%,不同规格集群的最大IOPS可参见企业版计算节点规格 | |
只读节点配置 | 只读节点无需与主节点配置保持一致,可以根据业务负载降配从而节省成本 | |
只读节点数量 | 支持1~15个只读节点 | |
连接地址 | 1个主地址+7个集群地址 | |
热备切换 | 连接/事务不中断,短暂阻塞5~10秒 | |
一致性 |
| |
连接池 | 支持 | |
事务拆分 | 支持 | |
防闪断(连接保持) | 支持 | |
数据脱敏(安全) | 支持 | |
变配业务无感 | 支持 | |
多主集群(库表) | 支持 | |
计算节点秒级弹性扩展 | 支持 | 独占资源,无需支持 |
Proxy限流保护(即将上线) | 支持 |
费用说明
数据库代理企业版不收取相关费用,可免费使用。
数据库代理企业版的切换策略如下:
系列 | 购买类型 | 切换策略 |
集群版 | 新购集群 | 在2021年12月9日后,新购集群仅提供数据库代理企业版。 |
存量按量付费集群 | 对于存量的按量付费集群,数据库代理于2021年12月9日已自动切换到数据库代理企业版。 | |
存量包年包月集群 | 对于存量的包年包月集群,数据库代理于2021年12月9日已自动切换到数据库代理企业版。 |
使用限制
仅PolarDB集群版支持集群地址和数据库代理相关功能。
注意事项
数据库代理默认的集群地址和自定义的集群地址都不支持压缩协议。
使用集群地址后,若未启用事务拆分,事务内的所有请求都会路由到主节点。
使用集群地址后,当执行
SHOW PROCESSLIST
命令时,系统会将所有节点的结果合并后返回。若执行了多语句或调用了存储过程,当前连接的后续请求会全部路由到主节点,需断开当前连接并重新连接才能恢复读写分离功能。
PolarDB集群地址本身并没有最大连接数的限制,连接数的限制主要由后端数据库中计算节点的规格决定。对于读写模式的集群地址由于一个应用连接会与后端数据库中每个计算节点各建立一个连接,所以应用能使用的最大连接数就是单个计算节点的最大连接数;对于只读模式的集群地址由于一个应用连接只会与后端数据库中的一个计算节点建立连接,所以应用能够使用的最大连接数为该只读集群地址下所有只读节点的最大连接数之和。对于读写模式的集群地址可以通过事务级连接池功能来增加应用的最大可用连接。
新增只读节点或重启只读节点之后新建的读写分离连接,会转发请求到该只读节点。新增只读节点或重启只读节点之前建立的读写分离连接,不会转发请求到新增的只读节点或重启后的只读节点上,需要断开该连接并重新建立连接,例如,重启应用程序。
请勿在运行Multi Statements或调用存储过程时修改环境变量,例如
set names utf8mb4;select * from t1;
,否则可能会导致请求路由到只读节点和主节点查到的数据不一致。当您使用应用连接池建立URL链接时,为了防止连接池在网络或其它非预期场景下丢包导致应用连接池hang住的问题,建议在URL链接中增加
connectTimeout
和socketTimeout
参数。参数说明请参见参数说明。示例如下:java url: jdbc:mysql://ip:port/db?connectTimeout=60000&socketTimeout=300000;
升级数据库代理规格
数据库代理企业版默认的规格可以满足用户绝大部分的应用场景。当客户进行压力测试或者业务吞吐量很高时,当前新版本的数据库代理规格会自动随着代理的负载实时升级,避免数据库代理成为瓶颈。对于老版本的数据库代理,您也可以手动升级其规格。
数据库代理不占用集群的CPU核数资源,因此其规格升级不会导致集群可用CPU数减少。
数据库代理企业版不收取费用,可免费使用。因此其规格升级也不会产生任何相关费用。
关于如何升级数据库代理规格,请参见升级数据库代理规格。
相关API
API | 描述 |
创建PolarDB集群的公网地址。 | |
创建PolarDB自定义集群地址。 | |
查询PolarDB集群的地址信息。 | |
修改PolarDB集群地址属性。 | |
修改PolarDB集群的连接地址(如自定义集群地址)。 | |
释放PolarDB集群地址(除了自定义集群地址的私网地址)。 | |
释放PolarDB自定义集群地址。 |