写点什么

YashanDB 故障诊断概念

作者:YashanDB
  • 2025-03-24
    广东
  • 本文字数:2300 字

    阅读完需:约 8 分钟

故障、问题和事件

为便于诊断和解决问题,YashanDB 引入了三个概念:故障、问题和事件。

故障

故障是 YashanDB 运行过程中可能出现的一些严重错误,由数据库内部定义。可以通过视图 V$DIAG_FAULT 查看相关故障的信息。

问题

问题是数据库运行过程中真实发生的故障,相同的故障可能会记录多个问题,相同故障的问题是通过问题键值进行区分的。可以通过视图 V$DIAG_PROBLEM 查看数据库运行过程中出现的问题。

事件

事件是单次出现的问题,数据库运行过程中,不同的会话在不同的时间可能产生相同的问题,数据库会创建多个事件,每个事件都有唯一标识的 ID 用于区分,也会记录当前会话的 ID。可以通过视图 V$DIAG_INCIDENT 查看数据库运行过程中出现的严重错误,和获取更多的诊断数据,例如创建时间、会话 ID、故障详细描述等。

--  该视图里定义当前YashanDB的所有故障信息SELECT TYPE,code,description FROM V$DIAG_FAULT;
TYPE CODE DESCRIPTION --------- ------------ ---------------------------------------------------------------- YASF 101 cannot allocate memory YASF 102 too many open files YASF 103 no space left on device YASF 104 failed to open file YASF 105 failed to create file YASF 106 failed to write file YASF 107 file metadata changed, for example, permissions, timestamps, extended attributes, and user/group ID, etcYASF 108 file is missing YASF 109 file is moved YASF 110 file system is unmounted YASF 111 failed to read file YASF 112 failed to extend file YASF 201 the data file is corrupted YASF 202 the redo log file is corrupted YASF 203 the ctrl files are corrupted YASF 204 data block versions are mismatching YASF 205 the database is aborted YASF 206 the database needs to be repaired YASF 207 deadlock detected YASF 208 inconsistent database startup YASF 209 watcher has an exception YASF 210 the user limit on the total number of watches was reached YASF 211 synchronization standby database destinations have failed
复制代码


当问题(严重错误)多次发生时,系统将为每次问题创建一个事件。 这些事件将在加上时间戳后,存储在自动诊断存储库中。每个事件都由事件 ID 标识,该 ID 在自动诊断存储库中是唯一的。

发生一个事件时,数据库将执行如下操作:

  • 收集首次失败的诊断数据。

  • 使用事件 ID 标记事件。

  • 将事件 dump 到为该事件创建的自动诊断存储库子目录中。

事件防洪

一个问题可能会在短时间内产生数十个或数百个事件,这将导致系统中生成过多的诊断数据,占用 自动诊断存储库中的太多空间,并可能减慢诊断和解决问题的速度。由于这些原因,故障诊断机制将在达到洪水阈值后控制事件的生成。

受到洪水控制的事件只记录告警日志,不再 dump 事件。洪水控制事件提供了一种通知用户正在发生严重错误的方法,但不会存在诊断数据过载的现象。

事件洪水控制的阈值水平是预先确定的,无法更改。它们定义如下:

  • 在一小时内同一问题发生 5 个事件后,此问题的后续事件将受到洪水控制。该问题的事件的正常(非洪水控制)记录将在下一个小时再次开始。

  • 在一天内同一问题发生 25 个事件后,此问题的后续事件将受到洪水控制。该问题的事件的正常记录将在第二天再次开始。

  • 在一小时内发生同一问题的 50 个事件,或者在一天内发生同一问题的 250 个事件后,此问题的后续事件永远不再记录到自动诊断存储库中。该情况下,数据库将向告警日志中写入一条消息,指示不会再记录其他事件。

Note: 事件洪水控制后不会再记录事件,但是会记录事件的防洪累计次数。 作为 DBA,应时常排查是否有新的事件产生,及时定位解决问题。 事件和问题诊断数据的存储上限为 1000000 条,如果个数超过该上限,新的诊断数据会覆盖旧的诊断数据。

自动捕获诊断数据——“黑匣子”

YashanDB 提供一种机制,在数据库进程出现故障宕机前,收集进程运行堆栈等信息,将诊断数据 dump 到自动诊断存储库中,这种主动诊断数据类似于飞机“黑匣子”飞行记录仪收集的数据。

Note: 当收集到 “黑匣子” 诊断数据,请打包诊断数据并及时联系我们的技术支持。

发布于: 刚刚阅读数: 6
用户头像

YashanDB

关注

全自研国产新型大数据管理系统 2022-02-15 加入

还未添加个人简介

评论

发布
暂无评论
YashanDB故障诊断概念_数据库_YashanDB_InfoQ写作社区