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

