首批通过分布式安全可靠测评,为关键业务系统打造
CLOG 写盘 HANG 导致切主问题
更新时间:2024-01-22 01:56
问题现象及原因
如果 CLOG 写入没有操作系统层的错误码返回,后台线程检测这个过程并且发现写入后没有任何返回,则认为磁盘写入 hang 住, 主动使当前节点的所有 leader 副本卸任,从而执行无主选举,此次无主选举后的 leader 通常在其他 follower 副本中产生新的 leader, 并且会将当前节点加入黑名单 (默认1800 秒内不能作为 leader candidate)。黑名单时间过期后,如果 CLOG 盘恢复,重新的选举将可能根据 primary zone 的设定继续选择之前 CLOG 盘写入 hang 的服务器作为 leader 节点,继续提供服务。
可以执行如下命令查找日志确定是否因为 CLOG 盘写入 hang 后由后台线程触发的切主动作。
grep "clog disk may be hang or something error has happen!" observer.log
以及在 leader 卸任后,leader revoke 日志中记录 "leader_revoke, please attention!", "revoke reason" 信息,其中 revoke reason 中记录的为:clog disk hang。
影响版本
OceanBase 数据库 V2.2.77 BP3 版本以及 V3.x 所有版本。
解决方法
- 如果该问题并非频繁发生,可以忽略。
- 如果经常发生,说明 CLOG 盘写入动作经常 hang,会影响生产环境的响应时间。同时切主导致应用重试的报错,需要进行硬件检测和磁盘固件升级等动作,如短时间无法排查到具体磁盘问题,可以替换节点临时规避。