Leader频繁切换,怎么办

在一个两分片、三副本的 OceanBase 集群中,发现某个分区的 Leader 频繁切换(Leader Switch),业务 RT 明显抖动,但集群整体状态显示为 ACTIVE。如何定位和处理?

3 个赞

Leader切换一般是手动和自动,你的描述应该频繁自动切换,自动切换的原因是资源不均造成的,有一个参数是超过百分之多少就自动切换,看一下这个值是多少,是不是太小了点呢,可以适当调大些

能说下具体那个参数吗

看看以下两个参数,你的负载均衡默认应该是打开的,包括集群级和租户级。
server_balance_cpu_mem_tolerance_percent:集群级配置项,控制触发资源单元均衡的阈值,默认值为 5。
server_balance_disk_tolerance_percent:集群级配置项,控制磁盘负载均衡的触发条件。

@论坛小助手

根据给定的文档片段,可以采取以下步骤定位和处理Leader频繁切换的问题:

  1. 确认集群状态:确保NTP时钟同步、没有日志磁盘或数据磁盘空间满、机房网络没有抖动,负载均衡设备/组件没有故障等问题。这可以通过OceanBase云平台提供的健康巡检功能快速检查。(文档ID:19723)
  2. 分析选举机制:理解OceanBase数据库利用Paxos协议的多数派共识机制保证数据可靠性和主副本的唯一性。Leader频繁切换可能是因为Leader副本遇到了一些故障无法继续提供服务,而Follower副本满足多数派并达成一致,推选出新的Leader。了解这一过程可以帮助我们更好地分析和解决问题。(文档ID:285、284)
  3. 检查租约:确认Leader是否能够在租约过期前持续连任。如果Leader无法连任成功,这可能是导致频繁切换的一个原因。OceanBase数据库采用时钟选举方案,如果Leader连任失败,会周期性发起无主选举,这可能导致Leader频繁切换。(文档ID:284)
  4. 查看相关事件:可以通过执行SQL查询来查看集群不同模块发生的调度事件,这有助于了解Leader切换的具体背景。例如,执行以下SQL语句:
SELECT `TIMESTAMP`, module, EVENT, name1, value1, name2, value2, rs_svr_ip 
FROM oceanbase.DBA_OB_ROOTSERVICE_EVENT_HISTORY 
WHERE module IN ('server', 'root_service', 'balancer') AND `TIMESTAMP` > SUBDATE(now(), INTERVAL 1 HOUR) 
ORDER BY `TIMESTAMP` DESC LIMIT 50;
  1. 进一步诊断:使用obdiag工具收集和分析节点上的日志信息,挖掘其中的关联性,以帮助识别潜在的根因。obdiag工具能够高效地获取故障场景下分散在各个节点的信息。(文档ID:176)

详情请参考:

  1. 分析诊断&决策流程
  2. 高可用 FAQ
  3. 集群近期 1 小时内发生的事件
  4. 通过 obdiag 工具进行诊断和分析

会不会是性能问题,cpu、内存资源够用么。可以看看日志分析

先确定一下切换的原因是否是负载均衡的任务导致的,还是其它原因导致的

1 个赞

点赞支持,学习了