MySQL进行监控配置的详细指南

 更新时间:2025年06月23日 08:53:50   作者:慧一居士  
这篇文章主要和大家分享一个完整的 MySQL 监控配置实战方案,涵盖监控工具安装,核心指标采集,可视化展示,告警配置等内容,需要的可以了解下

以下是一个完整的 MySQL 监控配置实战方案,涵盖监控工具安装、核心指标采集、可视化展示、告警配置等内容。基于 Prometheus + Grafana + mysqld_exporter 实现。

一、环境准备

1.操作系统:CentOS 7+ / Ubuntu 20+

2.MySQL 版本:5.7+ 或 8.0+

3.监控工具栈:

  • Prometheus(数据采集与告警)
  • Grafana(可视化)
  • mysqld_exporter(MySQL 数据导出)

二、部署监控组件

1. 安装 Prometheus & Grafana

# 下载并解压
wget https://github.com/prometheus/prometheus/releases/download/v2.45.0/prometheus-2.45.0.linux-amd64.tar.gz
wget https://dl.grafana.com/oss/release/grafana-10.0.0.linux-amd64.tar.gz

# 解压
tar -zxvf prometheus-*.tar.gz
tar -zxvf grafana-*.tar.gz

# 移动到 /usr/local
mv prometheus-* /usr/local/prometheus
mv grafana-* /usr/local/grafana

# 创建符号链接
ln -s /usr/local/prometheus/bin/prometheus /usr/local/bin/prometheus
ln -s /usr/local/grafana/bin/grafana-server /usr/local/bin/grafana-server

2. 配置 Prometheus

编辑 /usr/local/prometheus/prometheus.yml,添加以下内容:

global:
  scrape_interval: 15s # 采集频率

scrape_configs:
  - job_name: 'mysql'
    static_configs:
      - targets: ['localhost:9104'] # mysqld_exporter 默认端口

3. 安装 mysqld_exporter

# 下载并解压
wget https://github.com/prometheus/mysqld_exporter/releases/download/v0.14.0/mysqld_exporter-0.14.0.linux-amd64.tar.gz
tar -zxvf mysqld_exporter-*.tar.gz
cd mysqld_exporter-*

# 移动到系统路径
mv mysqld_exporter /usr/local/bin/

# 创建配置文件目录
mkdir -p /etc/mysqld_exporter

4. 配置 mysqld_exporter

创建 /etc/mysqld_exporter/.my.cnf,配置 MySQL 访问权限:

[client]
user=monitor_user    # 用于监控的 MySQL 用户
password=your_password
host=127.0.0.1
port=3306

创建监控用户(替换为实际密码):

CREATE USER 'monitor_user'@'localhost' IDENTIFIED BY 'your_password';
GRANT PROCESS, REPLICATION CLIENT, SHOW DATABASES ON *.* TO 'monitor_user'@'localhost';
FLUSH PRIVILEGES;

启动 mysqld_exporter:

mysqld_exporter --config.my-cnf=/etc/mysqld_exporter/.my.cnf &

三、配置 Prometheus 抓取 MySQL 指标

在 prometheus.yml 中添加:

scrape_configs:
  - job_name: 'mysql'
    metrics_path: /metrics
    static_configs:
      - targets: ['localhost:9104']

重启 Prometheus:

systemctl restart prometheus

四、部署 Grafana 并配置仪表盘

1.启动 Grafana:

grafana-server web &

访问 http://<服务器IP>:3000,默认账号 admin/admin。

2.添加 Prometheus 数据源:

  • 进入 Configuration -> Data Sources -> Add data source
  • 选择 Prometheus,填写 URL http://localhost:9090,保存。

3.导入 MySQL 监控仪表盘:

访问 Grafana Dashboard 库,搜索 MySQL。

推荐导入:

五、核心监控指标

通过 Grafana 展示以下关键指标:

1.基础状态:

  • Uptime
  • Version
  • Connections (Threads_connected)

2.性能指标:

  • QPS (Queries per second)
  • TPS (Transactions per second)
  • InnoDB Buffer Pool Usage
  • Slow Queries

3.资源使用:

  • CPU Usage (User/System Time)
  • Memory Usage (Key buffer, InnoDB buffer pool)
  • Disk I/O (Read/Write throughput)

4.高可用性:

  • Replication Status (Seconds_Behind_Master)
  • MGR Member State

六、告警配置

在 Prometheus 中配置告警规则(/etc/prometheus/alert.rules):

groups:
  - name: mysql_alerts
    rules:
      - alert: HighConnections
        expr: mysql_global_status_threads_connected > 100
        for: 5m
        labels:
          severity: warning
        annotations:
          summary: "MySQL 活跃连接数过高"
      - alert: ReplicationDelay
        expr: mysql_slave_seconds_behind_master > 300
        for: 5m
        labels:
          severity: critical
        annotations:
          summary: "MySQL 主从复制延迟超过 5 分钟"

在 Prometheus 中加载规则文件,并配置 Alertmanager 通知(邮件/钉钉/微信)。

七、自动化脚本增强

编写脚本定期检查慢查询、表碎片、索引效率等:

#!/bin/bash
# slow_query_report.sh

# 获取慢查询日志
slow_log=$(grep "^# Query" /var/log/mysql/slow.log | tail -n 10)
echo "慢查询日志:" >> /tmp/mysql_report.txt
echo "$slow_log" >> /tmp/mysql_report.txt

# 检查表碎片
table_fragmentation=$(mysql -e "SELECT table_schema, table_name, round((data_length - index_length) / data_length * 100, 2) as fragmentation FROM information_schema.tables WHERE fragmentation > 10;")
echo "表碎片情况:" >> /tmp/mysql_report.txt
echo "$table_fragmentation" >> /tmp/mysql_report.txt

# 发送邮件
mail -s "MySQL Daily Report" admin@example.com < /tmp/mysql_report.txt

设置定时任务:

crontab -e
# 每天凌晨 1 点执行
0 1 * * * /path/to/slow_query_report.sh

八、验证与优化

1.模拟故障测试:

  • 停止 MySQL 服务,验证 Prometheus 是否触发告警。
  • 插入大量慢查询,检查慢查询统计是否正常。

2.调整阈值:

根据业务流量调整 QPS、TPS、连接数告警阈值。

3.长期存储:

配置 Prometheus 长期存储(如 VictoriaMetrics 或 Thanos)。

总结

通过以上配置,可以实现对 MySQL 的全方位监控,包括实时性能、资源使用、高可用性状态等。结合告警和自动化脚本,可提前发现潜在问题,保障数据库稳定性。

到此这篇关于MySQL进行监控配置的详细指南的文章就介绍到这了,更多相关MySQL监控配置内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 浅谈MyISAM 和 InnoDB 的区别与优化

    浅谈MyISAM 和 InnoDB 的区别与优化

    InnoDB和MyISAM是在使用MySQL最常用的两个表类型,各有优缺点,视具体应用而定。下面我们就来具体探讨下吧
    2015-07-07
  • mysql could not be resolved: Name or service not known

    mysql could not be resolved: Name or service not known

    今天查看mysql日志的时候发现[Warning] IP address '10.0.0.220' could not be resolved: Name or service not known,原来是mysql DNS反解:skip-name-resolve的原因,屏蔽一下就可以了
    2015-08-08
  • MySQL 中如何归档数据的实现方法

    MySQL 中如何归档数据的实现方法

    本文主要介绍了MySQL 中如何归档数据的实现方法,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-03-03
  • 用SELECT... INTO OUTFILE语句导出MySQL数据的教程

    用SELECT... INTO OUTFILE语句导出MySQL数据的教程

    这篇文章主要介绍了用SELECT... INTO OUTFILE语句导出MySQL数据的教程,是MySQL入门学习中的基础知识,需要的朋友可以参考下
    2015-05-05
  • Mysql数据库绿色版安装教程 解决系统错误1067的方法

    Mysql数据库绿色版安装教程 解决系统错误1067的方法

    这篇文章主要为大家详细介绍了MySql数据库绿色版安装教程,以及系统错误1067的解决方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-08-08
  • MySQL 中字符集详细介绍

    MySQL 中字符集详细介绍

    这篇文章主要介绍了MySQL 中字符集详细介绍,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-08-08
  • MySQL InnoDB引擎的缓存特性详解

    MySQL InnoDB引擎的缓存特性详解

    这篇文章主要介绍了MySQL InnoDB引擎的缓存特性详解的相关资料,需要的朋友可以参考下
    2022-09-09
  • MySQL索引踩坑合集从入门到精通

    MySQL索引踩坑合集从入门到精通

    本文详细介绍了MySQL索引的使用,包括索引的类型、创建、使用、优化技巧及最佳实践,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2025-11-11
  • 如何恢复Mysql数据库的详细介绍

    如何恢复Mysql数据库的详细介绍

    这里说的MySql恢复数据库,是指没有通过正常备份的情况下,通过Mysql保存的数据文件如何恢复数据库
    2013-09-09
  • MySql的乐观锁和幂等性问题解决方案及场景示例

    MySql的乐观锁和幂等性问题解决方案及场景示例

    在分布式系统中,乐观锁、幂等性设计和数据插入失败处理是保障数据一致性和系统可靠性的三大核心机制,它们共同协作以解决并发冲突、重复请求和网络异常等问题,这篇文章主要介绍了MySql的乐观锁和幂等性问题解决方案及场景示例,需要的朋友可以参考下
    2025-05-05

最新评论