温馨提示×

怎样监控debian mysql

小樊
49
2026-10-13 16:59:09
栏目: 云计算

在 Debian 上监控 MySQL,可以从系统层、MySQL 内部状态、日志、以及第三方工具几个层面来做。下面按“从简单到专业”的方式给你一个比较完整的方案。


一、最基础:看 MySQL 是否在运行

systemctl status mysql
# 或
service mysql status

查看进程:

ps aux | grep mysqld

二、使用 MySQL 自带命令监控

1. 查看 MySQL 运行状态

mysqladmin status

示例输出含义:

  • Uptime:运行时间
  • Threads:当前连接线程数
  • Questions:总查询数
  • Slow queries:慢查询数

2. 实时查看连接和线程

mysqladmin extended-status

或进入 MySQL:

SHOW STATUS;
SHOW GLOBAL STATUS;

重点关注:

  • Threads_connected
  • Threads_running
  • Slow_queries
  • Innodb_buffer_pool_wait_free

3. 查看当前连接

SHOW PROCESSLIST;
-- 或
SHOW FULL PROCESSLIST;

看是否有:

  • 长时间 Sleep
  • 锁等待
  • 慢查询

三、开启并分析慢查询日志(非常重要)

1. 修改配置文件

Debian 一般是:

/etc/mysql/mysql.conf.d/mysqld.cnf

添加或修改:

slow_query_log = 1
slow_query_log_file = /var/log/mysql/mysql-slow.log
long_query_time = 1

重启 MySQL:

systemctl restart mysql

2. 查看慢日志

tail -f /var/log/mysql/mysql-slow.log

或用工具分析:

mysqldumpslow /var/log/mysql/mysql-slow.log

四、监控错误日志

tail -f /var/log/mysql/error.log

重点关注:

  • 崩溃
  • 表损坏
  • 内存不足
  • 复制错误

五、系统级监控(CPU、内存、磁盘)

top
htop
free -h
df -h
iotop

MySQL 常见瓶颈:

  • 内存不足 → swap
  • 磁盘 IO 高
  • CPU 被慢 SQL 占满

六、使用 Prometheus + Grafana(推荐生产环境)

架构

MySQL → mysqld_exporter → Prometheus → Grafana

安装 mysqld_exporter

apt install prometheus-mysqld-exporter

配置:

/etc/default/prometheus-mysqld-exporter

创建监控用户:

CREATE USER 'exporter'@'localhost' IDENTIFIED BY 'password';
GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO 'exporter'@'localhost';

Grafana 导入 MySQL Dashboard(如 7362)。


七、使用 keepalived / Zabbix(企业级)

Zabbix

  • 安装 zabbix-agent
  • 使用 MySQL 模板
  • 可监控:
    • QPS
    • 连接数
    • 复制延迟
    • 表空间

八、常见监控指标建议

指标 说明
Threads_connected 连接数
Slow_queries 慢查询
Innodb_row_lock_waits 锁等待
Buffer pool hit rate 缓存命中率
Replication lag 主从延迟

九、简单脚本报警(示例)

#!/bin/bash
C=$(mysqladmin status | awk '{print $4}')
if [ "$C" -gt 200 ]; then
  echo "MySQL 连接过多" | mail admin@x.com
fi

如果你愿意,可以告诉我:

  • 是 个人服务器 / 生产环境
  • 是否使用 主从复制
  • 想要 轻量监控还是可视化管理

我可以直接给你一套可复制的配置方案。

0 踩