MySQL 监控需要了解哪些方面的知识

快猫运营团队 2025-02-13 16:02:36

MySQL监控

MySQL 监控主要分几个方面:

  • MySQL 进程本身的存活性
  • MySQL 的运行日志、慢日志
  • MySQL 暴露的性能指标

使用 MySQL 内置工具

MySQL 提供了一些内置的工具和命令,可以帮助你监控数据库的状态。

SHOW STATUS

SHOW STATUS 命令可以查看 MySQL 服务器的性能指标,比如连接数、查询数、缓存命中率、InnoDB引擎的各类指标等。

SHOW GLOBAL STATUS;

通过分析这些状态变量,可以了解数据库的运行状况。另外,MySQL 还提供了 SHOW VARIABLES 命令,可以查看 MySQL 服务器的配置参数。有时会在配置参数和状态变量之间找到一些关联。比如连接数过多,可能是 max_connections 参数设置过小。

SHOW PROCESSLIST

SHOW PROCESSLIST 可以查看当前正在执行的查询和连接信息,帮助识别慢查询或阻塞问题。

SHOW PROCESSLIST;

比如某个 SQL 执行的很慢,通过 SHOW PROCESSLIST 就可以看到这个查询的状态。

Performance Schema

MySQL 的 Performance Schema 提供了详细的性能监控数据,比如我们经常使用如下的一些查询:

哪类SQL执行最多

SELECT * FROM performance_schema.events_statements_summary_by_digest ORDER BY COUNT_STAR DESC limit 10;

哪类SQL的平均响应时间最多

SELECT * FROM performance_schema.events_statements_summary_by_digest ORDER BY AVG_TIMER_WAIT DESC limit 10;

哪个表物理IO最多

SELECT
file_name,
event_name,
SUM_NUMBER_OF_BYTES_READ,
SUM_NUMBER_OF_BYTES_WRITE
FROM file_summary_by_instance
ORDER BY SUM_NUMBER_OF_BYTES_READ + SUM_NUMBER_OF_BYTES_WRITE DESC LIMIT 10\G

慢查询日志(Slow Query Log)

启用慢查询日志可以记录执行时间超过指定阈值的查询,帮助定位性能瓶颈。

SET GLOBAL slow_query_log = 'ON';
SET GLOBAL long_query_time = 2; -- 记录超过 2 秒的查询

使用监控工具

除了 MySQL 自带的工具,许多开源监控工具可以更直观地监控 MySQL 的性能和状态。

  • Prometheus + MySQL Exporter:Prometheus 是一款开源的监控系统,MySQL Exporter 可以将 MySQL 的性能指标暴露给 Prometheus,通过 Grafana 展示监控数据。
  • Zabbix:Zabbix 是一款功能强大的监控系统,支持 MySQL 的监控。不过老版本的 Zabbix 对 MySQL 的监控就是靠一批命令脚本着实不太优雅,Zabbix agent2 倒是好多了。
  • Nightingale + Categraf:Nightingale 是一款开源的监控系统,Categraf 是 Nightingale 的采集器,支持 MySQL 的监控。Categraf 的 MySQL 监控插件除了可以采集 MySQL 基础指标,还可以自定义 SQL 语句采集业务指标。

MySQL 监控的关键指标

在监控 MySQL 时,需要关注以下关键指标:

连接相关

  • 连接数(Connections):当前连接数和最大连接数,以及 abort 的连接数。

查询性能

  • 查询速率(Queries Per Second, QPS):每秒执行的查询数。
  • 慢查询数(Slow Queries):执行时间超过阈值的查询数。

缓存性能

  • InnoDB 缓冲池命中率(InnoDB Buffer Pool Hit Rate):InnoDB 缓冲池的命中率。

锁和等待

  • 锁等待时间(Lock Wait Time):锁等待的时间。
  • 死锁数(Deadlocks):发生的死锁次数。

资源使用

  • CPU 和内存使用率:MySQL 进程的 CPU 和内存占用。
  • 磁盘 I/O:读写操作的性能,这个尤为关键。

复制状态

  • 主从复制延迟(Replication Delay):主从复制的延迟时间。

总结

MySQL 是非常常用的一款数据库,如何监控 MySQL,是广大运维、DBA非常关心的问题。通过 MySQL 自带的工具和开源监控工具,可以更直观地监控 MySQL 的性能和状态,及时发现问题,提高数据库的稳定性和性能。

联系我们交流

快猫星云 联系方式 快猫星云 联系方式
快猫星云 联系方式
快猫星云 联系方式
快猫星云 联系方式
快猫星云
OpenSource
开源版
Flashcat
Flashcat