PolarDB数据库代理是位于数据库和应用程序之间的网络代理服务,用于代理应用程序访问数据库时的所有请求,具有高可用、高性能、可运维、简单易用等特点,支持自动读写分离、负载均衡、一致性级别、连接池、过载保护等高级功能。您可以连接PolarDB集群地址使用数据库代理的各项功能。

PolarDB数据库代理介绍

1

PolarDB集群版高压缩引擎(X-Engine)是一个由多节点构成的数据库集群,包括一个主节点和多个只读节点。对外默认提供两个地址,分别为主地址集群地址。其中,集群地址功能由PolarDB数据库代理提供,集群地址分为可读可写(自动读写分离)和只读两种读写模式。

支持两种数据库代理版本

数据库代理企业版提供两种版本: 企业通用版企业独享版
  • 企业通用版:配套集群子系列的通用规格,它可以共享CPU物理资源,可根据业务负载,提供智能秒级资源弹性扩展能力。
  • 企业独享版:配套集群子系列的独享规格,它可以独占CPU物理资源,具有更好的性能稳定性。
两种版本的差异如下表所示:
对比项 企业通用版 企业独享版
计费类型 付费(约占计算节点总费用的5~10%)
当前暂时免费使用,未来收费时间待定
说明 Serverless集群的数据库代理需要收取一定的费用,具体请参见 Serverless费用说明
资源类型 共享CPU物理资源,可根据业务负载,提供智能秒级资源弹性扩展能力 独占物理资源,具有更好的性能稳定性
部署架构 高可用冗余架构
实例规格 最低配置:2核
性能 集群存储最大IOPS相比历史版本可提升50%,不同规格集群的最大IOPS可参见计算节点规格
只读节点配置 只读节点无需与主节点配置保持一致,可以根据业务负载降配从而节省成本
只读节点数量 支持1~15个只读节点
连接地址 1个主地址+7个集群地址
热备切换 连接/事务不中断,短暂阻塞5~10秒
一致性
  • 最终一致性
  • 会话一致性
  • 全局一致性
连接池 支持
事务拆分 支持
防闪断(连接保持) 支持
数据脱敏(安全) 支持
变配业务无感 支持
多主集群(库表) 支持
计算节点秒级弹性扩展 支持 独占资源,无需支持
Proxy限流保护(即将上线) 支持

费用

数据库代理企业版目前可免费使用,未来将收费,收费时间待定。
说明 Serverless集群的数据库代理需要收取一定的费用,具体请参见 Serverless费用说明
数据库代理企业版的费用策略如下:
系列 购买类型 费用策略
单节点 不论是新购还是存量,都不支持数据库代理功能。
集群版高压缩引擎(X-Engine) 新购集群 在2021年12月9日后,新购集群仅提供数据库代理企业版。
存量按量付费集群 对于存量的按量付费集群,数据库代理于2021年12月9日已自动切换到数据库代理企业版。
存量包年包月集群 对于存量的包年包月集群,数据库代理于2021年12月9日已自动切换到数据库代理企业版。

使用限制

PolarDB集群版高压缩引擎(X-Engine)支持集群地址和数据库代理相关功能。PolarDB单节点采用单节点架构无需集群地址和数据库代理功能。

注意事项

  • 数据库代理默认的集群地址和自定义的集群地址都不支持压缩协议。
  • 使用集群地址后,若未启用事务拆分,事务内的所有请求都会路由到主节点。
  • 使用集群地址后,当执行SHOW PROCESSLIST命令时,系统会将所有节点的结果合并后返回。
  • 若执行了Multi Statements或调用了存储过程,当前连接的后续请求会全部路由到主节点,需断开当前连接并重新连接才能恢复读写分离功能。
  • PolarDB集群地址本身并没有最大连接数的限制,连接数的限制主要由后端数据库中计算节点的规格决定。对于读写模式的集群地址由于一个应用连接会与后端数据库中每个计算节点各建立一个连接,所以应用能使用的最大连接数就是单个计算节点的最大连接数;对于只读模式的集群地址由于一个应用连接只会与后端数据库中的一个计算节点建立连接,所以应用能够使用的最大连接数为该只读集群地址下所有只读节点的最大连接数之和。对于读写模式的集群地址可以通过事务级连接池功能来增加应用的最大可用连接。
  • 新增只读节点或重启只读节点之后新建的读写分离连接,会转发请求到该只读节点。新增只读节点或重启只读节点之前建立的读写分离连接,不会转发请求到新增的只读节点或重启后的只读节点上,需要断开该连接并重新建立连接,例如,重启应用程序。
  • 请勿在运行Multi Statements或调用存储过程时修改环境变量,例如set names utf8mb4;select * from t1;,否则可能会导致请求路由到只读节点和主节点查到的数据不一致。
  • 当您使用应用连接池建立URL链接时,为了防止连接池在网络或其它非预期场景下丢包导致应用连接池hang住的问题,建议在URL链接中增加connectTimeoutsocketTimeout参数。参数说明请参见参数说明。示例如下:

    java url: jdbc:mysql://ip:port/db?connectTimeout=60000&socketTimeout=300000;

相关API

API 描述
CreateDBEndpointAddress 创建PolarDB集群的公网地址。
CreateDBClusterEndpoint 创建PolarDB自定义集群地址。
DescribeDBClusterEndpoints 查询PolarDB集群的地址信息。
ModifyDBClusterEndpoint 修改PolarDB集群地址属性。
ModifyDBEndpointAddress 修改PolarDB集群的连接地址(如自定义集群地址)。
DeleteDBEndpointAddress 释放PolarDB集群地址(除了自定义集群地址的私网地址)。
DeleteDBClusterEndpoint 释放PolarDB自定义集群地址。