MySQL 性能监控的关键在于全面覆盖数据库运行状态、资源使用、查询效率、复制延迟等多个维度,以便及时发现问题、优化性能。以下是
MySQL 性能监控应关注的主要指标分类与关键项:
一、系统资源层指标(主机级别)
| 监控项 | 描述 |
|---|
| CPU 使用率 | 高 CPU 使用率可能说明查询或线程过多、慢查询等问题 |
| 内存使用率 | 内存不足会导致频繁的磁盘 IO、查询性能下降 |
| 磁盘 IO | 监控磁盘读写速率、IOPS、IOwait,特别是数据目录所在磁盘 |
| 网络带宽 | 网络抖动或带宽限制可能影响主从同步或远程连接 |
| 文件描述符数量 | 达到上限会影响新连接的创建 |
二、MySQL 实例级指标(服务级别)
1. 连接与线程
| 监控项 | 描述 |
|---|
| 当前连接数(Threads_connected) | 当前打开的连接数 |
| 活跃线程数(Threads_running) | 当前正在执行的线程数量,高于并发能力说明瓶颈存在 |
| 最大连接数(max_connections) | 如果接近上限,连接池配置或代码需优化 |
| Aborted_connections | 被拒绝或异常中断的连接数,可能是应用侧连接管理不当 |
2. 查询性能
| 监控项 | 描述 |
|---|
| QPS/TPS(Queries/Transactions per second) | 每秒处理查询/事务数量 |
| 慢查询数量(Slow_queries) | 累积的慢查询数,需配合慢日志分析 |
| 查询缓存命中率 | 查询是否命中 Query Cache(若启用) |
| Handler_read% 系列 | 表示表扫描频率,读取数据的方式(全表、索引、缓存) |
| Innodb_rows_read/insert/update/delete | 行级操作计数,有助于理解数据读写压力 |
3. 索引与表扫描
| 监控项 | 描述 |
|---|
| Table_open_cache_hits/misses | 表缓存命中情况,Miss 多可能表缓存太小或表太多 |
| Created_tmp_disk_tables | 多少临时表写到了磁盘(而非内存),过多表示排序/连接效率差 |
| Select_full_join/scan | 是否频繁全表扫描/未使用索引 |
4. 缓存与内存使用(尤其是 InnoDB 引擎)
| 监控项 | 描述 |
|---|
| Buffer Pool 使用率 | InnoDB 缓冲池的使用效率,命中率越高越好 |
| innodb_buffer_pool_reads | 缓冲池无法命中,需要从磁盘读取的次数 |
| innodb_log_buffer_size | 日志缓冲区大小,写入频率高说明可优化 |
| innodb_row_lock_time_avg | 行锁平均等待时间,反映是否存在严重锁竞争 |
三、复制与高可用(主从结构)
| 监控项 | 描述 |
|---|
| Seconds_Behind_Master | 从库延迟(越小越好) |
| Slave_IO_Running / Slave_SQL_Running | 复制线程状态,应持续为 Yes |
| Relay_Log_Space | 从库日志大小,积压可能说明 SQL 线程慢 |
| Last_Error | 最近一次复制错误 |
四、安全与异常行为
| 监控项 | 描述 |
|---|
| 用户登录失败次数 | 判断是否有暴力破解等异常 |
| 权限变更 | 权限变化日志(可选开启 general log 审计) |
| 多次失败的 SQL | 执行错误次数(注意非法操作、权限不足等) |
五、自定义业务指标(可选)
| 类型 | 示例 |
|---|
| 业务操作频率 | 某张订单表写入量、商品表查询量等 |
| 特定表大小 | 热表增长趋势、活跃数据表空间利用率 |
| 锁冲突监控 | 热点表或热点行锁竞争频率(例如在线抢购) |
六、可视化与告警建议
- ✅ 使用 Prometheus + Grafana + mysqld_exporter 做时序可视化
- ✅ 自定义告警规则(如 QPS 急剧下降、延迟升高、慢查询激增)
- ✅ 配置指标持久化,便于历史趋势分析和容量规划
七、示例图表建议
| 监控图表 | 建议频率与视角 |
|---|
| CPU、内存、磁盘、网络四项资源 | 1分钟粒度,过去24小时趋势 |
| QPS/TPS、活跃线程数 | 每秒或每5秒更新 |
| InnoDB 缓存命中与 IO 数量 | 高峰期对比分析 |
| 主从延迟与错误 | 需告警机制 |
| 慢查询 TopN 分布与执行计划 | 每小时自动统计 |
如需我帮你生成一套针对你实际 MySQL 部署场景(版本、引擎、部署方式等)的 监控指标配置清单 + Grafana Dashboard 模板 + 告警规则示例,欢迎告诉我你当前的架构与目标场景,我可以定制优化。