首批通过分布式安全可靠测评,为关键业务系统打造
OceanBase 数据库 V3.X 版本的磁盘故障检测原理
更新时间:2023-11-14 03:16
本文主要介绍 OceanBase 数据库的磁盘故障检测逻辑。
适用版本
OceanBase 数据库 V3.X 版本
数据盘故障检测逻辑
数据盘对读写流量有两种不同的检测逻辑。
对于写操作,如果在 1 分钟内出现 100 次失败,则 OceanBase 数据库会将数据盘标记为故障。
对于读操作,OceanBase 数据库在首次读超时后,会触发探测性重试,当重试时间超过
data_storage_warning_tolerance_time时,会将磁盘标记为WARN状态,该台 OBServer上 的 Leader 会卸任。如果在磁盘标记为ERROR之前重试成功,则数据盘恢复为正常状态,默认超时时间为 30 秒,取值范围 10~300 秒。在重试超过data_storage_error_tolerance_time时,会将磁盘标记为ERROR状态。数据盘的ERROR状态不可自动恢复,需要运维人员介入处理,默认超时时间为 300 秒,取值范围为 10~7200 秒。
日志盘故障检测逻辑
当日志盘存在任意日志写入的情况下,如果写入耗时超过 30 秒,Oceanbase 数据库会将故障日志盘所在OBServer 上所有分区的 Leader 副本切换到其他可用节点,在故障恢复之前,该 OBServer 不会当选为Leader,只参与选举投票。该行为由 data_storage_warning_tolerance_time 配置项控制,表示当日志写盘 hang 住超过该配置项指定的值后,就会发生 Leader 卸任。默认为 30 秒,取值范围为 10~300 秒。