本文描述磁盘发生故障时对 OBServer 的影响。
系统表
__all_server中显示stop_time不为 0,但 status 为 active,说明 observer 进程存在,但不能提供服务,处于 stop 状态。obclient> select * from __all_server where stop_time >0 ;从 RS 历史事件表中能够看到 RS 执行了 stop server 的操作。
obclient> select * from oceanbase.__all_rootservice_event_history order by gmt_create limit 10 \G在
observer.log中查看 stop server 操作前的 ERROR 日志,发现如下异常。Fail to io macro block,...,ret=-4012这个结果表明,OceanBase 数据库在获取微块时,有磁盘 IO 异常。
observer 进程定期向 RS 汇报磁盘健康状态。
- 当 RS 无法收到 OBServer 的汇报时,会对 OBServer 做下线处理(status=inactive)。
- 如果 RS 能够收到 OBServer 的汇报,但其磁盘状态异常,则会对其做 stop server 的处理。
适用版本
OceanBase 数据库所有版本。