如何在JDBC URL中正确配置使用Galera Load Balancer?
Galera集群JDBC负载均衡允许状态配置解答
你将galeraAllowedState配置为4,2在技术层面是可行的,但需要结合你的业务实际场景评估风险后再落地使用,具体说明如下:
状态基础说明
Galera集群节点的两个目标状态的核心特征:
- 状态4(Synced):节点已经和集群完成全量同步,可正常处理读写请求,是官方推荐的唯一允许接入的状态,无额外性能、一致性风险
- 状态2(Donor/Desynced):节点正在作为捐赠者,为新加入/需要数据恢复的节点传输同步数据,此时节点会被标记为非同步状态,默认不参与集群流控,虽然允许连接处理请求,但IO、CPU资源占用会明显升高,请求延迟会有大幅波动
适用场景
如果你的业务符合以下特征,可以保留4,2的配置:
- 集群规模较小,节点间同步的数据量通常不大,Donor状态的持续时间很短
- 业务对请求延迟的容忍度较高,或者上层已经配置了完善的超时重试、故障转移机制,可兜底短时间的请求异常
潜在风险
如果是核心业务场景,不建议添加状态2到允许列表,核心风险点如下:
- 当Donor节点需要传输大量数据(比如新节点全量同步)时,节点资源会被同步任务占满,可能导致正常读写请求超时甚至卡住
- 极端情况下如果Donor节点在同步过程中异常离线,可能会引发已提交请求的一致性问题,该情况概率低但对核心业务影响大
额外提示
你当前贴出的JDBC URL存在小笔误,loadbalance后缺少冒号,修正后的正确格式为:
jdbc:mariadb:loadbalance://10.0.0.4:3306,10.0.0.5:3306/mydb?galeraAllowedState=4,2
如果确实需要利用Donor节点的资源,建议额外添加loadBalanceBlacklistTimeout参数,调低异常节点的拉黑阈值,一旦Donor节点出现响应超时可以快速从可用列表中剔除,降低对业务的影响。
内容的提问来源于stack exchange,提问作者user15012700
相关产品推荐
相关产品推荐

