MySQL Exporter 是 Prometheus 生态中用于监控 MySQL 数据库的核心工具,通过采集丰富的性能指标帮助用户分析数据库运行状态。以下是其关键指标分类及解读方法:
一、核心指标分类与解读
1. 数据库可用性与基础状态
-
**
mysql_up
**值为
1
表示 MySQL 实例正常运行,0
表示不可用。用于快速判断数据库是否存活。 -
**
mysql_global_status_uptime
**数据库已运行时间(秒)。若突然归零可能表示实例重启,需结合告警规则监控异常重启。
2. 连接与线程
-
**
mysql_global_status_threads_connected
**当前活跃连接数。若接近
mysql_global_variables_max_connections
(最大连接数),可能触发连接拒绝,需优化连接池或扩容。 -
**
mysql_global_status_threads_running
**正在执行查询的线程数。持续高位可能表明查询阻塞或锁竞争。
-
**
mysql_global_status_aborted_connects
**连接失败次数。突增可能由网络问题或认证错误引起。
3. 查询性能
-
**
mysql_global_status_queries
**服务器执行的查询总数。通过 PromQL
rate(mysql_global_status_queries[5m])
计算 QPS,反映数据库负载。 -
**
mysql_global_status_slow_queries
**慢查询数量。需结合
long_query_time
配置,突增时使用pt-query-digest
分析具体 SQL。 -
**
mysql_global_status_select_scan
**全表扫描次数。高值提示索引缺失或优化器选择不当。
4. InnoDB 存储引擎
-
缓冲池指标
-
mysql_global_status_innodb_buffer_pool_read_requests
(读请求数) -
mysql_global_status_innodb_buffer_pool_reads
(从磁盘读取次数)命中率公式 :
(1 - reads/requests) * 100
。低于 95% 需扩大缓冲池或优化查询。
-
-
锁竞争
-
mysql_global_status_innodb_row_lock_waits
(行锁等待次数) -
mysql_global_status_innodb_row_lock_time_avg
(平均等待时间)高值表明事务并发冲突,需优化事务隔离级别或拆分热点数据。
-
5. 复制状态(主从架构)
-
**
mysql_slave_status_seconds_behind_master
**从库复制延迟(秒)。非零值需检查网络或主库写入压力。
-
**
mysql_slave_status_slave_io_running
**I/O 线程状态。
0
表示复制中断,需检查主从配置。
6. 资源使用
-
流量
mysql_global_status_bytes_received
(入站)和mysql_global_status_bytes_sent
(出站)。突增可能由大查询或数据导出引起。 -
文件描述符
mysql_global_status_open_files
与mysql_global_variables_open_files_limit
对比,接近上限需调整配置。
二、关键计算指标(PromQL 示例)
-
QPS 计算
scssrate(mysql_global_status_queries[1m])
-
缓冲池命中率
scss(1 - rate(mysql_global_status_innodb_buffer_pool_reads[5m]) / rate(mysql_global_status_innodb_buffer_pool_read_requests[5m])) * 100
-
连接使用率
mysql_global_status_threads_connected / mysql_global_variables_max_connections * 100
三、实战应用场景
-
性能瓶颈定位
- 高 QPS 但低缓冲池命中率 → 优化查询或扩容缓冲池。
- 慢查询突增 → 使用
pt-query-digest
分析日志并优化索引。
-
容量规划
- 连接数持续接近上限 → 调整
max_connections
或引入读写分离。
- 连接数持续接近上限 → 调整
-
复制监控
- 延迟持续增长 → 检查从库 I/O 线程或主库写入批量。
四、指标采集注意事项
-
权限配置
Exporter 需 MySQL 用户授予
SELECT
(performance_schema
、information_schema
)、PROCESS
和REPLICATION CLIENT
权限。 -
安全优化
- 限制 Exporter 监听 IP,避免暴露
9104
端口到公网。 - 使用专用监控用户并定期轮换密码。
- 限制 Exporter 监听 IP,避免暴露
通过以上指标,可全面监控 MySQL 的健康状态,结合 Grafana 仪表盘(如模板 ID 7362)实现可视化,并通过 Prometheus Alertmanager 设置阈值告警。