一文搞懂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 周做一次全面巡检,而不是等告警响了再处理

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

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

  • 2026年MaxScale注意事项最新趋势与技术选型
    2026年MaxScale注意事项最新趋势与技术选型

    MaxScale 作为数据库代理确实是实现读写分离、高可用和自动故障转移的关键一步。为了避免在生产环境中踩坑,以下是 MaxScale 部署与运维的核心注意事项:1. 配置与版本兼容性版本匹配:MaxScale 对 MariaDB/MySQL 的版本有要求。例如,MaxScale 22.x 及更早版本不支持 MySQL 8...

  • 2026年MongoDB和MySQL选择最新趋势与技术选型
    2026年MongoDB和MySQL选择最新趋势与技术选型

    在 MongoDB 和 MySQL 之间做选择,本质上是“灵活的文档模型”与“严谨的关系模型”之间的博弈。以下是针对 CMS 场景的核心选型建议:1. 核心差异对比表格下载为表格导出为图片维度MongoDB (NoSQL)MySQL (关系型)数据模型文档型 (JSON/BSON),字段动态扩展表结构,需预先定...

  • 保姆级云数据库MySQL教程:数据库高手进阶之路
    保姆级云数据库MySQL教程:数据库高手进阶之路

    结合搜索到的阿里云、腾讯云官方文档和实战教程,为你整理一份从零开始的云数据库 MySQL 保姆级教程,涵盖两种主流方案:托管云数据库(RDS) 和 ECS 自建 MySQL。方案对比:托管 RDS vs ECS 自建表格下载为表格导出为图片维度托管云数据库(RDS)ECS 自建 MySQL运维成本极低...

  • ES查询免费替代完全指南:2026年数据库实战
    ES查询免费替代完全指南:2026年数据库实战

    寻找 Elasticsearch (ES) 的免费替代方案时,通常需要根据具体的业务场景(如日志分析、电商搜索、轻量级应用等)以及团队的技术栈来决定。以下是几款目前主流的免费开源替代方案,涵盖了从“无缝迁移”到“极致轻量”的不同方向:无缝迁移首选:OpenSearch如果你现...

  • MongoDB实例避坑指南:生产环境血泪教训
    MongoDB实例避坑指南:生产环境血泪教训

    MongoDB 实例是 MongoDB 数据库的独立运行环境,是承载数据存储与处理功能的基本单位。下面从概念、部署架构到代码实践,为你系统梳理。什么是 MongoDB 实例MongoDB 实例本质上是一个独立运行的 mongod 进程,拥有自己专属的 CPU、内存、磁盘和端口资源。一个实例内可以...