通过不断地对 TiDB 的学习,我了解到了 TiDB 作为一款先进的分布式数据库,核心优势在与弹性扩缩容、高可用性、强一致性和实时的 HTAP 能力。但是,这些优势也引入了心的复杂度。
组件繁多
一个 TiDB 集群就包含了 TiDB-Server、TiKV、PD、TiFlash 等多个组件,监控的指标维度多,数量大。如下图所示,这个是 TiDB 的体系架构。
动态性强,容易误报
扩缩容、数据调度、负载均衡等都是动态进行的,传统静态阈值监控方式极易产生误报。
根因定位困难
TiDB Server 内部包含多个模块,一个慢查询问题,可能源于 SQL 本身、业务负载激增、TiKV 磁盘 IO、网络延迟或 PD 调度问题,人工排查如同大海捞针。
容量规划复杂
传统的运维方式是预估需要的服务器资源,然后乘以 2 倍的资源,就是上线时资源,但随着业务的增长,如何科学地规划硬件资源,避免资源浪费或不足,也是对开发团队和运维团队一个比较大的挑战。
通过上面的几个痛点,我们知道单纯依赖运维人员盯着 Dashboard,手动分析日志和指标,已经无法有效管理大规模的 TiDB 集群了,我们需要更强大的武器 - AiOps。