SQL 诊断
SQL 诊断功能是在 TiDB 4.0 版本中引入的特性,用于提升 TiDB 问题定位的效率。TiDB 4.0 版本以前,用户需要使用不同的工具以异构的方式获取不同信息。新的 SQL 诊断系统对这些离散的信息进行了整体设计,它整合系统各个维度的信息,通过系统表的方式向上层提供一致的接口,提供监控汇总与自动诊断,方便用户查询集群信息。
- 集群信息表:TiDB 4.0 诊断系统添加了集群信息表,为原先离散的各实例信息提供了统一的获取方式。它将整个集群的集群拓扑、硬件信息、软件信息、内核参数、监控、系统信息、慢查询、语句、日志完全整合在表中,让用户能够统一使用 SQL 进行查询。
- 集群监控表:TiDB 4.0 诊断系统添加了集群监控系统表,所有表都在 中,可以通过 SQL 语句来查询监控信息。比起原先的可视化监控,SQL 查询监控允许用户对整个集群的所有监控进行关联查询,并对比不同时间段的结果,迅速找出性能瓶颈。由于 TiDB 集群的监控指标数量较大,SQL 诊断还提供了监控汇总表,让用户能够更便捷地从众多监控中找出异常的监控项。
集群信息表将一个集群中的所有实例的信息都汇聚在一起,让用户仅通过一条 SQL 就能查询整个集群相关信息。集群信息表列表如下:
- 集群拓扑表 用于获取集群当前的拓扑信息,以及各个实例的版本、版本对应的 Git Hash、各实例的启动时间、各实例的运行时间。
- 集群配置表
information_schema.cluster_config
用于获取集群当前所有实例的配置。对于 TiDB 4.0 之前的版本,用户必须逐个访问各个实例的 HTTP API 才能获取这些配置信息。 - 集群硬件表 用于快速查询集群硬件信息。
- 集群负载表
information_schema.cluster_load
用于查询集群不同实例以及不同硬件类型的负载信息。 - 内核参数表 用于查询集群不同实例的内核配置信息。目前支持查询 sysctl 的信息。
TiDB 4.0 之前的系统表,只能查看当前实例信息,TiDB 4.0 实现了对应的集群表,可以在单个 TiDB 实例上拥有整个集群的全局视图。这些表目前都位于 information_schema
中,查询方式与其他 information_schema
系统表一致。
- :由于目前添加的系统表数量较多,因此用户可以通过该表查询这些监控表的相关元信息。
由于 TiDB 集群的监控指标数量较大,因此 TiDB 4.0 提供以下监控汇总表:
- 监控汇总表
information_schema.metrics_summary
用于汇总所有监控数据,以提升用户排查各监控指标的效率。 - 监控汇总并按 label 聚合表 同样用于汇总所有监控数据,但该表会对各项监控的不同的 label 进行聚合统计。
以上集群信息表和集群监控表均需要用户手动执行 SQL 语句来排查集群问题。TiDB 4.0 中添加了自动诊断功能,根据已有的基础信息表,提供诊断相关的系统表,使诊断自动执行。自动诊断相关的系统表如下: