2.32 分析用户
3.22.01.0版本dble支持单纯使用分析用户
2.32.1 分析用户配置
2.32.1.1 单纯使用分析用户功能的配置
仅需在 user.xml 文件中配置 analysisUser并指定对应的dbGroup即可。dbGroup的配置参考db.xml的章节。这里需要注意的是四种用户配置的顺序是固定的。user.xml的配置请参考user.xml章节。
<dble:user xmlns:dble="http://dble.cloud/" version="4.0">
<managerUser name="man1" password="654321" maxCon="100"/>
<shardingUser name="root" password="123456" schemas="testdb" readOnly="false" maxCon="20"/>
<rwSplitUser name="rwsu1" password="123456" dbGroup="rwGroup" maxCon="20"/>
<analysisUser name="analysisUser" password="123456" dbGroup="dbGroup3" blacklist="blacklist1" maxCon="20"/>
</dble:user>
配置注意事项:
- 当user.xml文件中不配置shardingUser,dble不再加载sharding.xml配置文件(即dble不具备分表分库),包括集群情况下出现sharding.xml不一致,均属于已知现象。
- 多个analysisUser可以引用同一个dbGroup。
- 被用户使用的dbGroup内的instance才会有心跳和连接池;未被有效使用的dbGroup内的instance只有心跳,不会初始化连接池。
2.32.2 负载均衡
dble通过配置多个dbInstance为读操作提供负载均衡,注意的是rwSplitMode配置不为0,详细请参见db.xml章节。负载均衡规则如下:
- 确定参与读写分离的dbInstance集合
- 负载均衡算法
2.3.2.1 确定参与读写分离的dbInstance集合
该算法在每次连接获取时提供可用的dbInstances实例集
- 写节点(primary="true")可用
- rwSplitMod配置为2,则写节点有资格参到读写分离,将写节点加入到dbInstances实例集
- 读节点(primary没配置或者 primary="false")
- 节点可用且需要进行延迟检测,检查延迟是否在阈值内再决定是否加入到dbInstances实例集
- 节点可用且不需要进行延迟检测,直接加入到dbInstances实例集
- 写节点异常
- 检查读节点是否可用,与上面读节点的检测机制一致
2.32.2.2 负载均衡算法
该算法在dbInstance集合中选择一个dbInstance实例来获取连接。
- dbInstance集合为空,前端报错。
- dbInstance集合非空
- 每个dbInstance有权重设置(readWeight参数), 但不都是等值权重, 依权重随机选择。
- 每个dbInstance无权重设置或所有权重等值, 则等权随机选择。此种情况只是上面情况的特例。
2.32.2.3 写节点是否参与均衡与dbGroup的rwSplitMode属性有关,具体见下图
2.32.3 分析用户支持语句类型
按照clickhouse对于mysql语法的兼容,对于select语句,dble目前都能支持
2.32.4 分析用户功能限制
- 目前仅支持clickhouse
- 目前支持select语句,其他类型语句dble不保证正确性
- 分析用户不支持带库名直接登录