#故障诊断
YashanDB提供故障诊断架构,用于收集和管理诊断数据,从而诊断和解决数据库的问题。
故障诊断架构有助于预防、检测、诊断和解决问题。发生严重错误时,将为其分配一个事件编号,并立即捕获该错误的诊断数据并使用该编号进行标记,然后将诊断数据存储在自动诊断存储库中,以后可以根据事件编号检索并进行分析。
故障诊断架构的目标如下:
- 首次故障诊断
- 故障预防
- 检测到故障后报错,防止数据进一步损坏
- 减少故障诊断的时间
- 减少故障解决的时间
实现这些目标的关键技术如下:
- 自动捕获数据——黑匣子:进程出现故障宕机前,收集进程运行堆栈等信息,存储在自动诊断存储库中。这种主动诊断数据类似于飞机“黑匣子”飞行记录仪收集的数据。
- 健康检查:检测到严重错误后,数据库会触发运行一个或多个健康检查,以对严重错误执行更深入的分析,健康检查的结果存储到自动诊断存储库中。单个健康检查会检查数据块损坏、redo坏块等。DBA可以手动调用这些健康检查,定期检查或者是根据需要调用。
- 事件警报:对于严重的错误,会在第一时间收集诊断数据,分配事件编号标识,存储在自动诊断存储库中,以便问题的追踪和解决。
- 故障检测及响应:当数据库检测到错误时,会采取一定的手段限制损坏或故障中断。例如:归档磁盘空间不足时,记录告警日志,数据库被设置为故障状态,避免用户执行业务卡住时无法感知错误。DBA需要及时的释放空间,恢复数据库状态。
- 巡检:实时监控数据库的一些组件,检测到严重错误时,立即上报或者是自动修复,及时修复避免引起更严重的错误。例如:数据文件监控等。
- 手动捕获数据——dump:允许用户手动执行dump命令,将系统内部结构信息转储到trace文件中,分析这些信息以便判断故障问题。