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

PolarDB数据库代理介绍

1

PolarDB集群版是一个由多节点构成的数据库集群,包括一个主节点和多个只读节点。对外默认提供两个地址,分别为主地址集群地址。其中,集群地址功能由PolarDB数据库代理提供,集群地址分为可读可写和只读两种读写模式,可读可写模式支持读写分离,只读模式支持按连接数负载。

费用

当前您可免费使用PolarDB的数据库代理功能。数据库代理功能后续将提供免费版和企业版供您选择,企业版将提供更好的企业级服务能力。

使用限制

PolarDB集群版支持集群地址和数据库代理相关功能。PolarDB单节点历史库采用单节点架构无需集群地址和数据库代理功能。

注意事项

  • 数据库代理默认的集群地址和自定义的集群地址都不支持压缩协议。
  • 使用集群地址后,若未启用事务拆分,事务内的所有请求都会路由到主节点。
  • 使用集群地址后,当执行SHOW PROCESSLIST命令时,系统会将所有节点的结果合并后返回。
  • 若执行了Multi Statements或调用了存储过程,当前连接的后续请求会全部路由到主节点,需断开当前连接并重新连接才能恢复读写分离功能。
  • PolarDB集群地址本身并没有最大连接数的限制,连接数的限制主要由后端数据库中计算节点的规格决定。
  • 新增只读节点或重启只读节点之后新建的读写分离连接,会转发请求到该只读节点。新增只读节点或重启只读节点之前建立的读写分离连接,不会转发请求到新增的只读节点或重启后的只读节点上,需要断开该连接并重新建立连接,例如,重启应用程序。
  • 请勿在运行Multi Statements或调用存储过程时修改环境变量,例如set names utf8mb4;select * from t1;,否则可能会导致请求路由到只读节点和主节点查到的数据不一致。

读写分离

PolarDB集群版自带读写分离功能。应用程序只需连接一个集群地址,写请求会自动发往主节点,读请求会自动根据各节点的负载(当前未完成的请求数)发往主节点或只读节点,详情请参见读写分离

负载均衡

PolarDB支持基于负载的自动调度策略,读请求将在多个只读节点中按照活跃连接数自动调度,来保证多个只读节点间的负载均衡。负载均衡包括主库是否接受读和事务拆分功能:
  • 主库是否接受读

    在确保一致性及事务正确性前提下,将查询SQL仅发送到只读节点,来降低主节点的负载,确保主节点稳定。详情请参见主库是否接受读

  • 事务拆分

    PolarDB提供了事务拆分功能,旨在保证读写一致性的前提下,将事务中的读请求发送到只读节点,减轻主节点的压力。详情请参见事务拆分

一致性级别

由于PolarDB使用异步复制的方式进行主从同步,该模式在读写分离模式下,可能出现一个写请求之后的读请求无法获得最新的写结果,导致不一致。PolarDB提供了最终一致性、会话读一致性以及全局一致性级别供您选择,详情请参见一致性级别

连接池

PolarDB支持会话级连接池和事务级连接池,您可以根据业务场景选择合适的连接池,帮助降低因大量连接导致的数据库负载压力,详情请参见连接池

连接保持

PolarDB新增支持连接保持功能,避免由于一些运维操作(如升级配置、主备切换或升级小版本等)或非运维操作故障(如节点所在服务器故障)导致的连接闪断或新建连接短暂失败的问题,进一步提高PolarDB的高可用性。具体请参见连接保持

并行查询

并行查询是PolarDB MySQL引擎8.0版本引入的并行查询框架。PolarDB会根据成本和规则的考虑,启动这个查询框架。更多关于并行查询的介绍请参见并行查询(Parallel Query)

动态脱敏

当应用程序发起数据查询请求时,系统会在数据库内部对敏感数据进行变换后再返回给应用程序。开始查询前,仅需指定需要进行脱敏查询的数据库账号,以及需要脱敏的数据库、表或列的名称即可。详情请参见动态脱敏

相关API

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