一文搞懂MySQL监控教程,面试和工作都用得到

2026-08-24 来源: 点击量

MySQL 监控是保障数据库稳定运行的核心能力,能帮你实现实时感知异常、故障提前预警、快速定位瓶颈、科学规划容量。下面从指标体系、工具选型、搭建实战到排查流程,为你梳理一套完整的教程。

一文搞懂MySQL监控教程,面试和工作都用得到

 监控的五维指标体系

搭建监控的第一步不是选工具,而是搞清楚该看什么。MySQL 核心指标分为五个维度:

维度一:资源使用

表格

下载为表格

导出为图片

指标含义告警阈值参考

CPU 使用率MySQL 进程 CPU 占用> 80% 持续 5 分钟

内存使用InnoDB Buffer Pool 占用实际使用 > 可用内存 90%

磁盘 IO每秒读写次数 IOPS写 IO 延迟 > 20ms

磁盘空间数据目录可用空间< 20%

网络吞吐每秒收发流量接近带宽上限

这些指标通过系统命令即可快速查看:

bash

1# CPU

2top -p $(pgrep mysqld) -n1

3# 内存

4free -h

5# 磁盘 IO

6iostat -x 1 3

7# 磁盘空间

8df -h /var/lib/mysql

维度二:连接与线程

连接池打满是"无法连接数据库"最常见的原因:

sql

1-- 当前连接数 vs 最大连接数

2SHOW VARIABLES LIKE 'max_connections';

3SHOW STATUS LIKE 'Threads_connected';

4

5-- 查看活跃连接来源和状态

6SELECT user, host, db, command, time, state

7FROM information_schema.processlist

8WHERE command != 'Sleep'

9ORDER BY time DESC;

连接数超过最大值的 80% 就该告警。活跃连接长期偏高,说明存在慢查询或锁等待。

维度三:查询性能

sql

1-- QPS 近似计算

2SHOW STATUS LIKE 'Questions';

3SHOW STATUS LIKE 'Uptime';

4

5-- 慢查询数量

6SHOW STATUS LIKE 'Slow_queries';

7

8-- 全表扫描次数

9SHOW STATUS LIKE 'Select_scan';

重点关注三个信号:

QPS 突降 → 可能有锁等待

Slow_queries 飙升 → SQL 性能退化或缺少索引

Select_scan 增长 → 全表扫描增多,索引设计可能有问题

维度四:InnoDB 引擎

sql

1-- Buffer Pool 命中率(核心指标!)

2-- 公式:1 - (Innodb_buffer_pool_reads / Innodb_buffer_pool_read_requests) × 100%

3-- 目标:> 99%

4SHOW STATUS LIKE 'Innodb_buffer_pool_read%';

5

6-- 行锁等待

7SHOW STATUS LIKE 'Innodb_row_lock_waits';

8SHOW STATUS LIKE 'Innodb_row_lock_time';

9

10-- 脏页比例

11SHOW STATUS LIKE 'Innodb_buffer_pool_pages%';

Buffer Pool 命中率低于 98% 说明内存不够用了,该扩容了。

维度五:主从同步

sql

1SHOW SLAVE STATUSG

2-- 关注两个关键字段:

3-- Seconds_Behind_Master(延迟秒数)

4-- Slave_IO_Running / Slave_SQL_Running(必须都是 Yes)

 三层工具选型

新手级:PMM(Percona Monitoring and Management)

PMM 是 Percona 开源的监控平台,基于 Prometheus + Grafana,开箱即用,适合快速上手:

bash

1# Docker 一键启动 PMM Server

2docker run -d -p 80:80 -p 443:443

3 --name pmm-server

4 percona/pmm-server:2

启动后访问 http://localhost:80,在界面中添加 MySQL 实例即可自动生成全套仪表盘。

进阶级:Prometheus + Grafana(生产推荐)

这是目前生产环境最主流的开源监控方案,分为三步搭建:

第一步:安装 mysqld_exporter

bash

1# 下载(注意版本兼容性,MySQL 5.7 建议用 v0.15.0)

2wget https://github.com/prometheus/mysqld_exporter/releases/download/v0.15.0/mysqld_exporter-0.15.0.linux-amd64.tar.gz

3tar xvf mysqld_exporter-0.15.0.linux-amd64.tar.gz

4

5# 配置数据库连接

6export DATA_SOURCE_NAME="exporter:password@(localhost:3306)/"

7

8# 启动

9./mysqld_exporter

第二步:配置 Prometheus 抓取

在 prometheus.yml 中添加 MySQL 采集任务:

yaml

1scrape_configs:

2 - job_name: 'mysql'

3 static_configs:

4 - targets: ['localhost:9104'] # mysqld_exporter 默认端口

第三步:配置 Grafana 可视化

安装 Grafana 并启动(默认端口 3000)

添加 Prometheus 为数据源(地址如 http://localhost:9090)

导入现成的 MySQL 仪表盘模板(Grafana 官网搜索 "MySQL",复制模板 ID 导入即可)

企业级:Zabbix / 云厂商监控

Zabbix:适合已有 Zabbix 体系的企业,支持自定义告警规则和触发器

阿里云/腾讯云数据库监控:云数据库自带性能监控面板,一键查看性能趋势,适合不想自建监控的团队

⚙️ 慢查询日志:最核心的排查利器

无论用什么监控工具,慢查询日志都是定位性能问题的第一入口:

sql

1-- 开启慢查询日志

2SET GLOBAL slow_query_log = 'ON';

3SET GLOBAL long_query_time = 1; -- 记录执行超过1秒的查询

4SET GLOBAL log_queries_not_using_indexes = 'ON'; -- 记录未使用索引的查询

分析工具推荐:

bash

1# 自带工具:按耗时排序

2mysqldumpslow -s t /var/log/mysql/mysql-slow.log

3

4# 按访问次数排序

5mysqldumpslow -s c /var/log/mysql/mysql-slow.log

6

7# Percona 专业工具(推荐):自动排序、统计、给出优化建议

8pt-query-digest /var/log/mysql/mysql-slow.log

 告警规则参考

以下是经过实战验证的核心告警阈值:

表格

下载为表格

导出为图片

告警项警告阈值严重阈值

连接数使用率> 80%> 95%

Buffer Pool 命中率< 99%< 95%

慢查询增长每分钟 > 10 条每分钟 > 50 条

主从延迟> 10 秒> 60 秒

磁盘空间< 20%< 10%

死锁次数每分钟 > 1 次每分钟 > 5 次

 标准排查流程(SOP)

当收到告警或发现性能异常时,按以下步骤排查:

看监控大盘:确认是 CPU/IO/连接数哪个维度出了问题

查慢查询日志:抓取耗时最长的 SQL

EXPLAIN 分析:确认是否走了索引,关注 type、key、rows、Extra 字段

查看进程列表:检查是否存在长事务、死锁sql

1SELECT * FROM information_schema.innodb_trx;

2SELECT * FROM information_schema.innodb_lock_waits;

优化并复测:加索引/改 SQL/调参数,对比优化前后耗时

 最佳实践总结

渐进式调整:每次只修改 1-2 个参数,避免引入新问题

基准测试:使用 sysbench 或 mysqlslap 验证优化效果

版本兼容:mysqld_exporter 版本要与 MySQL 版本匹配,否则采集可能报错

采集精简:Prometheus 采集时重点关注核心指标,避免采集过多无用指标占用资源

巡检常态化:建议每隔 1-2 周做一次全面巡检,而不是等告警响了再处理

相关文章
  • 一文搞懂数据库优化方案,面试和工作都用得到
    一文搞懂数据库优化方案,面试和工作都用得到

    数据库优化是一个系统性工程,通常遵循“先定位瓶颈,再针对性优化”的原则。结合你平时关注的软件开发技术栈,这里为你梳理了一套从 SQL 到架构的实战优化方案,可以直接落地到项目中:第一步:精准定位瓶颈在动手优化前,必须先通过数据找到真正的性能...

  • Redis数据类型常见问题排查手册
    Redis数据类型常见问题排查手册

    Redis 早已超越了简单的 Key-Value 缓存,其核心竞争力在于提供了一套丰富且原生支持的数据结构。结合你平时对软件开发技术的关注,以下为你梳理了 Redis 的核心数据类型及其在工程化落地中的选型逻辑:核心基础数据类型(五大金刚)这五种类型覆盖了 90% 以上的常规...

  • InnoDB手册避坑指南:生产环境血泪教训
    InnoDB手册避坑指南:生产环境血泪教训

    文库中暂时没有收录 InnoDB 手册的文档资源,但通过网页搜索为你找到了几个高质量的获取渠道:InnoDB 中文参考手册这是一份专门针对 InnoDB 存储引擎的中文参考手册(CHM 格式),系统性地涵盖了 InnoDB 的全部关键机制与内部原理,包括:事务处理:ACID 四大特性的完整...

  • 2026年HikariCP最佳实践最新趋势与技术选型
    2026年HikariCP最佳实践最新趋势与技术选型

    HikariCP 是目前 Java 生态中性能最高的数据库连接池,也是 Spring Boot 2.x/3.x 的默认选择。但在生产环境中,直接使用默认参数往往会导致连接耗尽、接口超时甚至服务雪崩。结合最新的线上故障复盘经验,为你梳理了 HikariCP 的核心最佳实践与生产级配置方案:生产环境...

  • OLTP电子书常见问题排查手册
    OLTP电子书常见问题排查手册

    文库中暂时没有搜到可直接下载的 OLTP 电子书资源,但我通过网络搜索为你整理了一份 OLTP 领域的经典书籍清单和获取途径。OLTP 领域经典书籍推荐《事务处理:概念与技术》(Transaction Processing: Concepts and Techniques)这是 OLTP 领域公认的奠基性经典著作,由图灵奖得主 J...

  • 一文搞懂MySQL监控教程,面试和工作都用得到
    一文搞懂MySQL监控教程,面试和工作都用得到

    MySQL 监控是保障数据库稳定运行的核心能力,能帮你实现实时感知异常、故障提前预警、快速定位瓶颈、科学规划容量。下面从指标体系、工具选型、搭建实战到排查流程,为你梳理一套完整的教程。监控的五维指标体系搭建监控的第一步不是选工具,而是搞清楚该...