OceanBase 数据库是原生的分布式数据库,故障原因涉及的因素比较多,如配置参数、运行负载及服务器环境等,对于 DBA 来说故障根因分析是个比较大的挑战。obdiag 是 OceanBase 官方推出的一款黑屏诊断工具,包含收集数据库日志、SQL Audit 以及进程堆栈等信息的功能,支持多种集群部署模式下的一键执行,完成诊断信息的获取。今天我们就一起了解下这个工具的具体功能和特点。
一键信息收集
分布式数据库节点数量比较多,问题分析时需要登录到不同的服务器收集相关信息,操作非常繁琐效率也很低。obdiag 提供 obdiag gather log 一键日志收集功能,大大简化了信息收集过程,为故障处理争取了更多的时间。
通过设定相应的参数,obdiag 支持收集指定时间段和包含相关关键字的信息,并且还可以编写脱敏规则来定义敏感数据,收集的数据会自动根据规则来进行脱敏处理(非常贴心的功能,给 OB 开发人员点赞!)。
一键集群巡检
集群巡检功能中内置了一系列巡检指标,从系统内核参数、集群状态、系统资源、系统状态及错误代码等多个维度评估系统运行状态是否健康,发现已存在或可能会导致集群出现异常问题的原因分析并给出相应的处理建议。
除了内置的指标外,还支持编写 yaml 脚本,通过 task 调用,来实现更为专业的、更加个性化的巡检工作。
一键诊断分析
一键诊断分析通过 obdiag analyze 命令帮助管理员做相关的诊断信息分析,支持全链路诊断日志一键分析、参数对比分析、变量分析、索引空间分析、内存分析和对列积压分析等多个子模块。
- 日志分析诊断使用 obdiag analyze log 对日志进行分析,找出发生过的错误信息,既支持直接连接集群节点的在线分析,也支持通过 --files 指定离线文件开启离线分析模式。全链路诊断日志分析能够对全链路日志进行分析,给出全链路诊断报告。
- 参数分析支持默认值对比分析和不同 OBServer 参数差异对比,帮助排查由于参数配置导致的各类问题。
- 索引空间分析既能够分析已创建的索引大小,也能够根据指定的索引列,评估将要创建的索引空间空间大小,对于磁盘空间比较紧张的环境比较有用。
- 内存分析可以根据日志中打印的内存信息生成内存分析报告,通过趋势图可以直观展现指定时间窗口内租户内存上下文和租户内存模块的内存使用情况;对列积压分析则能够基于日志中打印的对列信息分析是否存在对列积压,为快速定位内存问题提供了明确的方向和依据。
一键根因分析
根因分析是数据库管理员经常要面临的工作,obdiag 的一键根因分析功能支持对 OceanBase 的异常场景进行分析,找出可能导致问题的原因。当前敏捷诊断工具V3.0.0版本中,支持以下场景的根因分析。
根因分析过程中需要采集较多的信息,因此会有服务器及数据库存在一定的交互,此外由于需要给出明确的错误原因,当前能够支持的场景还比较有限。相信随着时间的积累,支持的场景会越来越多,而且通过 yaml 脚本也可以实现自己定制的根因分析。
一键集群洞察
最后,一键集群洞察既能够一键显示集群概览和节点、Zone和租户等详细信息,也支持集群事件、锁、TOPSQL和 SlowSQL 等运行状态信息。
这里限于篇幅的原因就不做详细的介绍,有兴趣的朋友可以参阅官方的文档。公众号后续也会继续对工具进行详细的评测,欢迎大家关注。
写在最后
总体来说,obdiag 是一款非常优秀且全面的 OceanBase 数据库运维工具,集群巡检、集群洞察等功能便于管理员获取到集群和数据库的运行状态;诊断分析功能能够对系统运行状态进行分析,生成趋势性的图表,便于管理员进一步分析问题的原因;根因分析则集成了多个故障场景的分析实践,快速定位故障原因并给出处理建议。
值得一提的是,智能运维工具的引入能够大大降低数据库的使用门槛,对于国产数据库的技术普及和市场推广有非常大的好处,毕竟人们总是更愿意使用自己能够掌控的技术。希望未来能看到更多优秀的国产数据库管理工具!