巡检工做是保障系统平稳有效运行必不可少的一个环节,目的是能及时发现系统中存在的隐患。咱们生活中也随处可见各类巡检,好比电力巡检、消防检查等,正是这些巡检工做,咱们才能在稳定的环境下进行工做、生活。巡检对于数据库或者其余IT系统来讲也一样相当重要,特别是在下降风险、提升服务稳定性方面起到了很是关键做用。前端
本文介绍了美团MySQL数据库巡检系统的框架和巡检内容,但愿可以帮助你们了解什么是数据库巡检,美团的巡检系统架构是如何设计的,以及巡检系统是如何保障MySQL服务稳定运行的。数据库
为了保障数据库的稳定运行,如下核心功能组件必不可少:服务器
其中,数据库巡检做为运维保障体系最重要的环节之一,可以帮助咱们发现数据库存在的隐患,提早治理,作到防患于未然。对于大规模集群而言,灵活健壮的自动化巡检能力,相当重要。微信
任何系统都会经历一个原始的阶段,最先的巡检是由中控机+定时巡检脚本+前端展现构成的。可是,随着时间的推移,老巡检方案逐渐暴露出了一些问题:架构
因此咱们须要一个灵活、稳定的巡检系统来帮助咱们解决这些痛点,保障数据库的稳定。框架
巡检系统的设计原则,咱们从如下三个方面进行考虑:运维
稳定:巡检做为保证数据库稳定的工具,它自身的稳定性也必须有所保证;
高效:以用户为中心,尽可能化繁为简,下降用户的使用成本,让新同窗也能迅速上手治理和管理隐患;提升新巡检部署效率,随着架构、版本、基础模块等运维环境不断变化,新的巡检需求层出不穷,更快的部署等于更早的保障;
可运营:用数据作基础,对巡检隐患进行运营,包括推动隐患治理,查看治理效率、趋势、薄弱点等。分布式
美团MySQL数据库巡检系统架构图设计以下。接下来,咱们按照架构图从下到上的顺序来对巡检系统主要模块进行简单的介绍:函数
巡检执行环境:由多台巡检执行机组成,巡检任务脚本会同时部署在全部执行机上。执行机会定时从巡检Git仓库拉取最新的脚本,脚本使用Python Virtualenv + Git进行管理,方便扩充新的执行机。工具
任务调度:巡检任务使用了美团基础架构部研发的分布式定时任务系统Crane进行调度,解决传统定时任务单点问题。Crane会随机指派某一台执行机执行任务,假如这台执行机出现故障,会指派其余执行机从新执行任务。通常一个巡检任务对应着一个巡检项,巡检任务会针对特定的巡检目标根据必定的规则来判断是否存在隐患。
巡检目标:除了对生产数据库进行巡检之外,还会对高可用组件、中间件等数据库周边产品进行巡检,尽量覆盖全部会引起数据库故障的风险点。
巡检数据库:主要用来保存巡检相关数据。为了规范和简化流程,咱们将巡检发现的隐患保存到数据库中,提供了通用的入库函数,可以实现如下功能:
巡检脚本Git仓库:用来管理巡检脚本。为了方便DBA添加巡检,在系统建设过程当中,咱们增长了多个公共函数,用来下降开发新巡检的成本,也方便将老的巡检脚本迁移到新的体系中。
集成到数据库运维平台:做为隐患明细展现、配置巡检展现、管理白名单等功能的入口。为了提升隐患治理效率。咱们作了如下设计。
隐患运营后台:这个模块主要目的是推动隐患的治理。
外部数据服务:主要是将巡检隐患数据提供给美团内部其余平台或项目使用,让巡检数据发挥更大的价值。
巡检项目根据负责方分为DBA和RD,DBA主要负责处理数据库基础功能组件以及影响服务稳定性的隐患。RD主要负责库表设计缺陷、数据库使用不规范等引发的业务故障或性能问题的隐患。也存在须要他们同时参与治理的巡检项,好比“磁盘可用空间预测”等。目前巡检项目共64个,类目分布状况以下图所示:
集群:主要检查集群拓扑、核心参数等集群层面的隐患;
机器:主要检查服务器硬件层面的隐患;
Schema/SQL:检查表结构设计、数据库使用、SQL质量等方面的隐患;
高可用/备份/中间件/报警:主要检查相关核心功能组件是否存在隐患。
下面,咱们经过列举几个巡检任务来对巡检项作简单的说明:
美团MySQL巡检系统已稳定运行近一年时间,基于新巡检体系上线的巡检项49个。经过巡检体系持续运行,在团队的共同努力下,咱们共治理了8000+核心隐患,近3个月隐患治理周期平均不超过4天,将隐患总数持续保持在极小的量级,有效地保障了数据库的稳定。
下面的隐患趋势图,展现了近一年中隐患的个数,数量忽然增加是因为新的巡检项上线。从总体趋势上看,隐患存量有很是明显的降低。
除了推进内部隐患治理以外,咱们还经过对接先知平台,积极推进RD治理隐患数量超过5000个。
为了提高用户体验,咱们在提高准确率方面也作了重点的投入,让每个巡检在上线前都会通过严格的测试和校验。
对比其余先知接入方,DBA上报隐患在总量、转化率、反馈率几个指标上都处于较高水平,可见咱们上报的隐患风险也获得了RD的承认。
指标说明:
除了继续完善补充巡检项之外,将来巡检系统还会在如下几个方向继续探索迭代:
王琦,基础架构部DBA组成员,2018年加入美团,负责MySQL数据库运维/数据库巡检系统/监控/自动化运维周报/运维数据集市建设等工做。
阅读更多技术文章,请扫码关注微信公众号-美团技术团队!