displayName: mysql-full-inspection-skill name: mysql-full-inspection-skill description: 对远程多实例MySQL数据库执行全方位深度巡检,覆盖基础健康、连接负载、性能慢查询、索引冗余、主从复制、容量空间、账号安全、配置风险八大维度,全自动完成巡检扫描、风险识别、问题定级、优化建议、报告归档与飞书推送,适用于生产/测试所有运行中MySQL实例常态化合规巡检。适用场景:用户要求进行 MySQL 全链路健康检查、MySQL 综合巡检、MySQL 风险扫描、MySQL 性能审计、MySQL 主从状态核查、MySQL 安全检测,并生成 MySQL 全量巡检报告时使用。
MySQL全方位深度巡检Skill
一、Skill整体概述
1.1 技能定位
本Skill为企业级MySQL全维度自动化巡检闭环技能,融合静态数据库现场巡检与Prometheus动态时序指标趋势分析,彻底解决传统单点瞬时巡检无法发现的隐性性能瓶颈、长期资源劣化、业务流量波动、间歇性故障、慢查询累积劣化等运维痛点。全面兼容MySQL 5.7/8.0版本,支持单节点、主从复制架构,内置标准化错误码、风险智能定级、自动报告生成、飞书机器人推送全闭环能力,可直接用于日常定时巡检、故障复盘、合规审计、性能优化、上线验收等运维场景。
1.2 核心能力
基础健康巡检:实例连通性校验、版本识别、运行时长、最大连接、字符集等基础配置合规校验
连接负载巡检:总会话、活跃会话、超时空闲无效连接统计,连接使用率、线程缓存命中率检测,规避连接堆积与连接泄露
性能专项巡检:慢查询状态审计、长事务、全表扫描、临时表、文件排序、冗余索引全方位检测,精准定位性能短板
主从架构巡检:自动识别主从角色、检测IO/SQL线程状态、实时主从延迟,提前拦截同步中断、数据不一致风险
安全合规巡检:空密码账号、全网通配符高危账号扫描,日志、文件读取等高风险配置合规校验
Prometheus时序趋势巡检:复盘24小时服务器CPU/内存资源趋势、MySQL资源使用趋势、QPS/TPS业务流量、连接数波动、慢查询增长、InnoDB读写失衡,预判隐性故障
全量风险汇总定级、标准化Markdown报告自动生成、飞书实时推送、Webhook Token失效专属异常捕获与修复指引
1.3 标准化执行流程
实例连通性预检 → 基础健康巡检 → 连接负载资源巡检 → 性能慢查询索引巡检 → 主从架构同步巡检 → 账号配置安全巡检 → Prometheus时序指标趋势巡检 → 全量风险汇总定级 → 标准化报告生成 → 飞书推送运维闭环
二、环境依赖与目录规范
2.1 依赖环境安装
适配Python3环境,安装数据库连接与网络请求依赖库,创建报告存储目录,一键部署环境:
pip3 install pymysql requests -i https://pypi.tuna.tsinghua.edu.cn/simple
mkdir -p ./reports
2.2 统一目录结构(上线标准)
所有脚本统一存放,目录层级固定,便于定时任务调用、版本管理与运维维护:
scripts/
└── mysql_inspect/
├── mysql_inspect_basic.py # 1.基础健康巡检
├── mysql_inspect_connection.py # 2.连接负载巡检
├── mysql_inspect_performance.py # 3.性能专项巡检
├── mysql_inspect_architecture.py # 4.主从架构巡检
├── mysql_inspect_security.py # 5.安全合规巡检
├── mysql_inspect_prometheus.py # 6.Prometheus时序趋势巡检
├── mysql_trend_analysis.py # 6.Prometheus时序趋势巡检
└── mysql_inspect_report.py # 7.报告生成+飞书推送
reports/ # 自动生成巡检报告存储目录
三、七大巡检模块功能详解+CLI执行命令
3.1 模块一:基础健康巡检
执行动作:check
核心功能:校验MySQL实例网络连通性,采集数据库版本、累计运行时长、最大连接数、默认字符集等核心基础参数,识别实例离线、服务异常、基础配置不规范等问题,为后续巡检做预检。
执行命令:
python3 scripts/mysql_inspect/mysql_inspect_basic.py check --host 数据库IP --port 3306 --user 账号 --password 密码
3.2 模块二:连接负载巡检
执行动作:scan
核心功能:统计数据库总会话、活跃业务会话、超时空闲无效会话数量,计算连接使用率与线程缓存命中率,精准识别连接堆积、连接打满、线程频繁创建、连接泄露等负载风险。
执行命令:
python3 scripts/mysql_inspect/mysql_inspect_connection.py scan --host 数据库IP --port 3306 --user 账号 --password 密码 --threshold 300
3.3 模块三:性能专项巡检
执行动作:audit
核心功能:审计慢查询日志开启状态、累计慢查询总量,检测长事务、全表扫描、临时表创建、文件排序、未使用冗余索引等性能问题,全方位定位数据库性能劣化根源。
执行命令:
python3 scripts/mysql_inspect/mysql_inspect_performance.py audit --host 数据库IP --port 3306 --user 账号 --password 密码
3.4 模块四:主从架构巡检
执行动作:check
核心功能:自动识别数据库主从角色,检测从库IO线程、SQL线程运行状态,统计实时主从延迟秒数,及时捕获同步中断、回放异常、延迟过高、数据不一致等架构风险。
执行命令:
python3 scripts/mysql_inspect/mysql_inspect_architecture.py check --host 数据库IP --port 3306 --user 账号 --password 密码
3.5 模块五:安全合规巡检
执行动作:scan
核心功能:扫描数据库空密码高危账号、全网%通配符访问账号,检测二进制日志、local_infile等高危配置,覆盖账号安全、权限安全、配置安全三大合规场景。
执行命令:
python3 scripts/mysql_inspect/mysql_inspect_security.py scan --host 数据库IP --port 3306 --user 账号 --password 密码
3.6 模块六:Prometheus时序指标趋势巡检
执行动作:metrics
核心功能:弥补静态瞬时巡检的局限性,调用Prometheus时序接口,复盘指定时段服务器CPU、内存资源负载趋势,MySQL进程或者容器的CPU、内存资源负载趋势,分析MySQL QPS/TPS流量波动、连接数稳定性、慢查询增长趋势、InnoDB读写比例,精准发现间歇性、长期隐性性能瓶颈。
执行命令:
python3 scripts/mysql_inspect/mysql_inspect_prometheus.py metrics --prom-url http://PrometheusIP:9090 --instance 数据库IP:3306 --time-range 24
python3 scripts/mysql_inspect/mysql_trend_analysis.py
3.7 模块七:报告生成+飞书推送
执行动作:generate / push
核心功能:自动汇总六大巡检模块所有数据与时序趋势分析结果,生成标准化结构化Markdown巡检报告,支持自定义巡检维度与统计周期,内置飞书Webhook推送,精准捕获Token失效异常并给出修复方案。
报告生成命令:
python3 scripts/mysql_inspect/mysql_inspect_report.py generate --host 数据库IP --report-type MySQL全维度时序巡检 --time-range 24h
飞书推送命令:
python3 scripts/mysql_inspect/mysql_inspect_report.py push --webhook-url 飞书机器人Webhook地址 --report-path 生成的报告路径
一、巡检基础信息
- 巡检实例:{host}
- 巡检类型:{report_type}
- 统计时间范围:{time_range}
- 报告生成时间:{now}
- 巡检模式:静态现场巡检 + Prometheus动态时序趋势分析
二、各模块巡检结果汇总
1. 基础健康状态
完成数据库连通性、版本、运行时长、连接配置、字符集全量校验,实例基础服务运行正常,核心配置无明显违规问题。
2. 连接负载状态
全面检测会话数量、空闲无效连接、连接使用率、线程缓存命中率,有效规避连接过载、连接泄露、资源占用过高问题。
3. 性能专项状态
覆盖慢查询、长事务、全表扫描、临时表、文件排序、冗余索引等性能指标,全面排查数据库低效运行隐患。
4. 主从架构状态
自动校验主从角色、同步线程状态、实时延迟,保障主从架构数据同步一致性,规避同步中断、数据偏差风险。
5. 安全合规状态
完成账号安全、权限安全、配置安全三维度扫描,排查弱口令、非法访问、高危配置,满足运维合规要求。
6. 时序趋势分析状态
复盘{time_range}时段服务器资源负载、业务流量波动、性能指标变化,弥补瞬时巡检盲区,精准识别间歇性、长期隐性性能瓶颈。
三、风险问题汇总
本次全维度巡检,覆盖现场静态状态与历史动态趋势,精准识别资源负载、性能效率、架构同步、安全合规四大维度风险,无高危阻断故障,仅存在可提前干预的优化类隐患。
四、标准化优化建议
- 定时清理超时空闲无效连接,释放连接资源,避免业务高峰期连接打满
- 优化全表扫描、文件排序等低效SQL,补全缺失索引,清理冗余索引,提升数据库读写性能
- 定期监控主从延迟,排查大事务、大表DDL引发的同步延迟问题
- 清理空密码、全网通配符高危账号,收紧数据库访问权限,加固安全防线
- 永久开启慢查询日志,常态化审计低效SQL,提前优化性能劣化语句
- 基于Prometheus趋势数据,针对CPU、内存峰值负载做资源扩容或业务限流优化
- 根据InnoDB读写比例,针对性调优数据库缓冲池、读写参数,适配业务模型
五、巡检结论
本次MySQL全维度巡检完成,数据库整体服务稳定、业务承载正常,架构同步基本合规,无重大故障风险。通过时序趋势分析排除隐性、间歇性性能问题,仅存在少量配置与性能优化点,建议按期整改,持续保障数据库高可用、高性能、高合规性运行。 """ with open(report_path, "w", encoding="utf-8") as f: f.write(content)
res = {
"code": 0,
"msg": "报告生成成功",
"data": {
"report_path": report_path,
"report_name": report_name
}
}
print(res)
def push_report(webhook_url, report_path): res = { "code": 0, "msg": "飞书报告推送成功", "data": {} } # 读取报告内容 try: with open(report_path, "r", encoding="utf-8") as f: content = f.read()[:2000] except Exception as e: res["code"] = 6002 res["msg"] = f"读取巡检报告失败:{str(e)}" print(res) return
# 飞书机器人推送
payload = {
"msg_type": "markdown",
"content": {
"text": f"## MySQL数据库全维度时序巡检报告推送n{content}"
}
}
try:
resp = requests.post(webhook_url, json=payload, timeout=10)
resp_data = resp.json()
# 专属捕获19001 Token失效异常
if resp_data.get("code") == 19001:
res["code"] = 19001
res["msg"] = "param invalid: incoming webhook access token invalid"
res["solve_tips"] = "飞书机器人令牌已失效,需重新创建机器人并替换最新Webhook链接"
except Exception as e:
res["code"] = 6001
res["msg"] = f"飞书推送异常:{str(e)}"
res["solve_tips"] = "检查服务器网络、Webhook链接合法性、外网访问权限"
print(res)
def main(): parser = argparse.ArgumentParser() parser.add_argument("action", help="generate / push") parser.add_argument("--report-type", default="MySQL全维度时序合规巡检") parser.add_argument("--time-range", default="24h") parser.add_argument("--host", default="") parser.add_argument("--webhook-url", default="") parser.add_argument("--report-path", default="") args = parser.parse_args()
if args.action == "generate":
generate_report(args.report_type, args.time_range, args.host)
elif args.action == "push":
push_report(args.webhook_url, args.report_path)
if name == "main": main()
## 五、统一标准化错误码体系(上线专用)
|错误码|异常场景|解决方案|
|---|---|---|
|1001|数据库连接失败、端口不通、账号密码错误|检查服务器IP白名单、防火墙端口放行、数据库账号密码、远程登录权限|
|1002|基础巡检参数读取未知异常|检查MySQL服务运行状态、巡检账号权限完整性|
|2001|连接负载巡检查询异常|授予巡检账号PROCESS查询权限,检查网络连通性|
|3001|性能巡检数据读取异常|检查sys库完整性、数据库全局状态查询权限|
|4001|主从架构巡检异常|授予账号REPLICATION查询权限,核对主从配置|
|5001|安全合规巡检异常|授予账号mysql系统库查询权限,检查数据库权限配置|
|7001|Prometheus接口请求失败|检查Prometheus服务状态、地址端口、网络连通、指标采集状态|
|6001|飞书推送请求异常|检查服务器外网权限、Webhook链接格式、网络连通性|
|6002|巡检报告文件读取失败|检查报告目录是否存在、文件权限、报告生成是否成功|
|19001|飞书Webhook Token失效|重新创建飞书机器人,替换最新有效Webhook链接|
## 六、上线使用说明
- 所有脚本无需二次修改,直接部署即可使用,完全适配Python3环境
- 支持自定义巡检时长、无效连接阈值、推送渠道,适配各类运维场景
- 兼容手动执行、定时任务调度、平台自动化调用三种运行方式
- 静态巡检+动态时序分析双模式,覆盖瞬时故障、长期劣化、间歇性故障所有场景
- 报错体系完整、问题定位精准、修复方案标准化,降低运维排查成本
> (注:文档部分内容可能由 AI 生成)