一文搞懂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 周做一次全面巡检,而不是等告警响了再处理
-
一文搞懂MySQL监控教程,面试和工作都用得到MySQL 监控是保障数据库稳定运行的核心能力,能帮你实现实时感知异常、故障提前预警、快速定位瓶颈、科学规划容量。下面从指标体系、工具选型、搭建实战到排查流程,为你梳理一套完整的教程。监控的五维指标体系搭建监控的第一步不是选工具,而是搞清楚该...
-
2026年MaxScale注意事项最新趋势与技术选型MaxScale 作为数据库代理确实是实现读写分离、高可用和自动故障转移的关键一步。为了避免在生产环境中踩坑,以下是 MaxScale 部署与运维的核心注意事项:1. 配置与版本兼容性版本匹配:MaxScale 对 MariaDB/MySQL 的版本有要求。例如,MaxScale 22.x 及更早版本不支持 MySQL 8...
-
2026年MongoDB和MySQL选择最新趋势与技术选型在 MongoDB 和 MySQL 之间做选择,本质上是“灵活的文档模型”与“严谨的关系模型”之间的博弈。以下是针对 CMS 场景的核心选型建议:1. 核心差异对比表格下载为表格导出为图片维度MongoDB (NoSQL)MySQL (关系型)数据模型文档型 (JSON/BSON),字段动态扩展表结构,需预先定...
-
保姆级云数据库MySQL教程:数据库高手进阶之路结合搜索到的阿里云、腾讯云官方文档和实战教程,为你整理一份从零开始的云数据库 MySQL 保姆级教程,涵盖两种主流方案:托管云数据库(RDS) 和 ECS 自建 MySQL。方案对比:托管 RDS vs ECS 自建表格下载为表格导出为图片维度托管云数据库(RDS)ECS 自建 MySQL运维成本极低...
-
ES查询免费替代完全指南:2026年数据库实战寻找 Elasticsearch (ES) 的免费替代方案时,通常需要根据具体的业务场景(如日志分析、电商搜索、轻量级应用等)以及团队的技术栈来决定。以下是几款目前主流的免费开源替代方案,涵盖了从“无缝迁移”到“极致轻量”的不同方向:无缝迁移首选:OpenSearch如果你现...
-
MongoDB实例避坑指南:生产环境血泪教训MongoDB 实例是 MongoDB 数据库的独立运行环境,是承载数据存储与处理功能的基本单位。下面从概念、部署架构到代码实践,为你系统梳理。什么是 MongoDB 实例MongoDB 实例本质上是一个独立运行的 mongod 进程,拥有自己专属的 CPU、内存、磁盘和端口资源。一个实例内可以...