更新时间:2024-04-29 GMT+08:00
分享

读写分离简介

读写分离是指通过一个读写分离的连接地址实现读写请求的自动转发。创建实例后,您可以开通读写分离功能,通过GaussDB(for MySQL)的代理地址,写请求自动访问主节点,读请求按照读权重配比或者活跃连接数情况分发到各个节点。目前支持创建4个代理实例,多个代理实例适用于有隔离需求的复杂业务,根据业务需要使用对应的连接地址连接到实例。

计费说明

数据库代理服务暂不收费。

功能限制

  • GaussDB(for MySQL)实例的内核版本低于2.0.42.230601时,仅支持创建1个代理实例。
  • GaussDB(for MySQL)实例的内核版本高于或等于2.0.42.230601时,最多支持创建4个代理实例。
  • 至少创建1个只读节点才能开启读写分离功能。
  • 开启读写分离功能后,不允许修改GaussDB(for MySQL)实例的端口和读写内网地址。
  • 读写分离功能不支持压缩协议。
  • 如果执行了Multi-Statements,当前连接的后续请求会全部路由到主节点,需断开当前连接并重新连接才能恢复读写分离。
  • 使用代理地址时,事务请求都会路由到实例的主节点(可以使用事务拆分功能对事务中写之前的读请求进行拆分),不保证非事务读的一致性,业务上有读一致性需求可以封装到事务中。
  • 使用代理地址时,show processlist和直连数据库有差异。因为proxy的show processlist是逻辑的,仅仅将通过proxy节点下发的业务展示出来,所以和直连数据库有差异。
  • 当某一个代理节点处于异常状态时,通过代理执行show processlist或者kill时,有可能会出现命令执行时间稍微变长的情况,此时无需关注,业务不会受到影响。
  • 当数据库代理进行缩容后,通过代理执行show processlist命令时,可能会将被缩容的节点上的业务展示出来。
  • 通过数据库代理进行kill时,偶尔可能会出现超时等报错信息,此时可以通过二次show processlist查看业务是否真正被kill成功。
  • 当数据库代理的某个节点处于异常状态时,执行show processlist命令时,可能会出现2秒卡顿,此时无需关注,结果会正常返回。
  • 数据库代理不支持事务隔离级别READ-UNCOMMITTED。
  • 数据库代理服务不支持读写表中单列超过16MB的数据。
  • 当使用数据库代理时,多语句拼接的SQL大小不超过100MB,避免数据库代理解析SQL消耗过多的资源。

操作场景

开通读写分离时,需选择加入代理的节点(包括主节点和只读节点)。

  • 各业务可以通过代理实例的代理地址连接实例。且读请求会分别发往连接的代理实例。您也可以对代理实例添加或移除节点。
  • 同一个节点(包括主节点和只读节点)可以同时被多个代理实例选择。
  • 读写模式的代理实例,可代理读、写请求,其中,写请求全部路由给主节点,读请求根据读权重配比或者是活跃连接数情况分发到各个节点。
  • 只读模式的代理实例,只能代理读请求,读请求根据读权重配比或者是活跃连接数情况分发到各个只读节点,不会分发到主节点。
  • 数据库代理默认提供过载保护功能:避免用户执行大结果集操作时,因压力过大引起服务端OOM。该功能默认打开,不需要用户单独设置。针对数据库内核过慢引起的压力,依赖数据库限流机制。

分享:

    相关文档

    相关产品