一文搞懂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 早已超越了简单的 Key-Value 缓存,其核心竞争力在于提供了一套丰富且原生支持的数据结构。结合你平时对软件开发技术的关注,以下为你梳理了 Redis 的核心数据类型及其在工程化落地中的选型逻辑:核心基础数据类型(五大金刚)这五种类型覆盖了 90% 以上的常规...
-
InnoDB手册避坑指南:生产环境血泪教训文库中暂时没有收录 InnoDB 手册的文档资源,但通过网页搜索为你找到了几个高质量的获取渠道:InnoDB 中文参考手册这是一份专门针对 InnoDB 存储引擎的中文参考手册(CHM 格式),系统性地涵盖了 InnoDB 的全部关键机制与内部原理,包括:事务处理:ACID 四大特性的完整...
-
2026年HikariCP最佳实践最新趋势与技术选型HikariCP 是目前 Java 生态中性能最高的数据库连接池,也是 Spring Boot 2.x/3.x 的默认选择。但在生产环境中,直接使用默认参数往往会导致连接耗尽、接口超时甚至服务雪崩。结合最新的线上故障复盘经验,为你梳理了 HikariCP 的核心最佳实践与生产级配置方案:生产环境...
-
OLTP电子书常见问题排查手册文库中暂时没有搜到可直接下载的 OLTP 电子书资源,但我通过网络搜索为你整理了一份 OLTP 领域的经典书籍清单和获取途径。OLTP 领域经典书籍推荐《事务处理:概念与技术》(Transaction Processing: Concepts and Techniques)这是 OLTP 领域公认的奠基性经典著作,由图灵奖得主 J...
-
一文搞懂MySQL监控教程,面试和工作都用得到MySQL 监控是保障数据库稳定运行的核心能力,能帮你实现实时感知异常、故障提前预警、快速定位瓶颈、科学规划容量。下面从指标体系、工具选型、搭建实战到排查流程,为你梳理一套完整的教程。监控的五维指标体系搭建监控的第一步不是选工具,而是搞清楚该...