本文为您介绍PolarDB数据库代理及其支持的相关功能。

前提条件

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

PolarDB架构及PolarDB数据库代理介绍

PolarDB架构

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

读写分离

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

FAQ

  • Q:为什么刚插入的语句,立即查的时候查不到?

    A:读写分离的架构下,主节点和只读节点之间复制会有延迟,但PolarDB支持会话一致性,即同一个会话内保证能读到之前的更新。

  • Q:为什么只读节点没有压力?

    A:默认情况下事务中的请求都会路由到主节点,若是用Sysbench做压测,0.5版本的Sysbench可以加上--oltp-skip-trx=on,1.0版本的Sysbench可以加上--skip-trx=on去掉事务,若业务上因为事务较多导致只读库负载过低,可以提交工单开启读写分离下的事务拆分功能。

  • Q:为什么某个节点的请求数比别的节点多?

    A:当前是根据负载来分发请求的,负载小的节点接收的请求数会更多。

  • Q:是否支持0毫秒延迟的读取?

    A:PolarDB集群的主节点和只读节点在正常负载情况下,具有毫秒级的延迟,读写分离连接地址暂时不支持在数据写入后0毫秒的读取。如果要求0毫秒延迟的读取,可使用主地址(动态指向PolarDB主节点)将读写请求发给主节点。

  • Q:新增的只读节点会自动加入到读写分离吗?

    A:新增只读节点之后新建的读写分离连接才会转发请求到该只读节点。若需要使新增只读节点之前建立的读写分离连接也转发请求到新增的只读节点,则您需要通过重启应用等操作断开该连接并重新建立连接。

相关API

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