PolarDB MySQL集群支持修改和释放集群地址,本文以默认集群地址为例介绍如何修改和释放集群地址。

修改集群地址

  1. 登录 PolarDB控制台
  2. 在控制台左上角,选择集群所在地域。
  3. 单击目标集群ID,进入集群基本信息页面。
  4. 链接地址区域,找到目标集群,单击目标集群名称右侧的齿轮图标后,再单击编辑配置
  5. 在弹出的对话框内,设置如下参数。
    参数 说明
    读写模式 本地址的读写模式,分为只读可读可写(自动读写分离)
    说明 创建自定义地址后还可以修改读写模式。修改读写模式后,只对新建连接生效,已有的连接保持原来的模式。
    读负载节点 在左侧选择想要加入本地址用于处理读请求的节点。可选节点包括主节点和所有只读节点。
    说明
    • 读写模式为只读时,支持创建单节点地址。若创建单节点地址,当此节点故障时,该地址可能会有最多1小时的不可用,请勿用于生产环境。因此推荐至少选择2个节点,提升可用性。
    • 读写模式为可读可写(自动读写分离)时,至少要选择2个节点。不论是否选中主节点,写请求都只会发往主节点。
    新节点自动加入 新增的节点是否要自动添加到该地址中。
    负载均衡策略 读写分离时,在多个节点间用于处理读请求的调度策略,默认为基于负载的自动调度,无需选择。
    一致性级别 读写模式为可读可写(自动读写分离)时,一致性级别可选择为最终一致性会话一致性(推荐)全局一致性,详情请参见PolarProxy功能介绍
    说明
    • 读写模式为只读时,默认选择最终一致性且无法更改。
    • 一致性级别修改后对所有连接立即生效。
    全局一致性读超时时间 等待只读节点同步到最新数据的超时时间,单位为ms。取值范围为0~6000ms,默认取值为20ms。
    说明 仅当一致性级别全局一致性时支持该配置。
    全局一致性读超时策略 在只读节点等待超时后,PolarDB的默认策略,取值范围如下:
    • 0,发送该请求到主节点(默认值)
    • 1,SQL报错(wait replication compelete timeout, please retry)
    说明 仅当一致性级别全局一致性时支持该配置。
    主库不接受读 在确保一致性的前提下,将查询SQL发送到只读节点,来降低主节点的负载,确保主节点稳定。
    说明可读可写(自动读写分离)模式下支持该配置。
    事务拆分 开启或关闭事务拆分,详情请参见PolarProxy功能介绍
    说明可读可写(自动读写分离)模式下支持该配置。
    连接池
    • 关闭(默认选项)
    • 开启会话级连接池

      会话级连接池适用于PHP短连接场景。

      PHP短连接优化主要用于减少短连接业务频繁建立新连接带来的负载。当某客户端连接断开时,系统会判断当前连接是否为闲置连接,如果是闲置连接,系统将会代理该连接并在连接池中保留一小段时间。当客户端重新发起连接请求时,若该闲置连接仍被保留在连接池中,则可直接使用已保留的闲置连接(命中的条件包括user、 clientip和 dbname等),从而减少与数据库的建连开销。如果连接池内没有可用的闲置连接,则走正常连接流程,与数据库重新建立新连接。

      说明 该优化并不能减少数据库的并发连接数,而是通过降低应用与数据库建连的速率来减少MySQL主线程的开销,更好的处理业务请求。但连接池里的闲置连接会短暂占用您的连接数。
    • 开启事务级连接池

      事务级连接池适用于总连接数比较多(如连接数上万)的场景。

      事务级连接池主要用于减少业务的连接数和短连接场景下频繁新建连接带来的负载。客户端可以与代理建立大量连接,但代理到数据库只创建少量连接。当客户端发送连接请求时,代理将从连接池中选取符合条件(即系统变量一致)的连接发送到数据库,并在当前事务结束后将该连接放回连接池。

      使用限制:

      • 当您执行以下行为时,连接将被锁定直至连接结束(即该连接不会再被放到连接池里供其它用户连接使用)。
        • 执行prepare语句或命令。
        • 创建临时表。
        • 修改用户变量。
        • 大报文(例如16M以上)。
        • 使用lock table。
        • 多语句。
        • 存储过程调用。
      • 不支持FOUND_ROWS、ROW_COUNT和LAST_INSERT_ID函数的调用,即使这些函数调用成功,但无法保证结果是否正确。
      • 对于设置了wait_timeout的连接,wait_timeout在客户端的表现可能不会生效,因为每次请求都会从连接池中获取连接,当wait_timeout超时后,只有连接池中的后端连接会断开,而后端连接断开并不会导致客户端连接断开。
      • 除了sql_modecharacter_set_servercollation_servertime_zone这四个变量以外,如果业务依赖其他session级别的系统变量,那么需要客户端在建连之后显式进行set语句执行,否则连接池可能会复用系统变量已经被更改过的连接。
      • 由于连接可能会被复用,所以使用select connection_id()查询当前连接的thread id可能会变化。
      • 由于连接可能会被复用,所以show processlist中,显示的IP地址和端口可能和客户端实际的IP地址和端口不一致。
      • 数据库代理会将所有节点上的show processlist结果合并后返回,而在事务级连接池开启后,前端连接和后端连接的thread id无法对应。这导致kill命令会可能返回一个错误,但是实际上kill命令已经正常执行成功,可再通过show processlist确定相应的连接是否断开。
    说明 仅系统默认集群地址在可读可写(自动读写分离)模式下支持该配置。
  6. 单击确定

释放自定义集群地址

说明 仅自定义集群地址可以被释放,默认集群地址无法被释放。
  1. 登录PolarDB控制台
  2. 在控制台左上角,选择集群所在地域。
  3. 单击目标集群ID,进入集群基本信息页面。
  4. 链接地址区域,找到目标集群,单击目标集群名称右侧的齿轮图标后,再单击释放
  5. 在弹出的对话框中,单击确定

相关API

API 描述
DescribeDBClusterEndpoints 查询集群地址。
ModifyDBClusterEndpoint 修改集群地址。
DeleteDBClusterEndpoint 释放自定义集群地址。