Ubuntu系统下MySQL性能监控与数据库优化的可行方案

一 内置与命令行快速检查
- 服务与基础状态
- 查看服务运行状态:
systemctl status mysql - 查看 MySQL 简要状态信息:
mysqladmin -u root -p status
- 查看服务运行状态:
- 连接与线程
- 检查当前连接数与运行线程:
SHOW GLOBAL STATUS LIKE 'Threads_connected';、SHOW FULL PROCESSLIST;
- 检查当前连接数与运行线程:
- InnoDB 关键指标
- 查看行锁与锁等待情况:
SHOW GLOBAL STATUS LIKE 'Innodb_row_lock%'; - 查看 InnoDB 引擎详细状态:
SHOW ENGINE INNODB STATUSG
- 查看行锁与锁等待情况:
- 配置与容量
- 检查关键配置项:
SHOW VARIABLES LIKE 'max_connections';、SHOW VARIABLES LIKE '%slow%'; - 统计数据库容量与表碎片情况:
SELECT table_schema, SUM(data_length/1024/1024) AS data_mb, SUM(index_length/1024/1024) AS idx_mb, SUM(data_free/1024/1024) AS free_mb FROM information_schema.tables GROUP BY table_schema;
以上命令非常适合 Ubuntu 下 MySQL 数据库的日常巡检和临时故障排查,能够帮助快速发现连接数、锁竞争以及容量增长等常见性能问题。
- 检查关键配置项:
二 日志与内置性能架构
- 慢查询日志
- 启用与阈值(在
/etc/mysql/my.cnf的[mysqld]段):slow_query_log = 1slow_query_log_file = /var/log/mysql/slow.loglong_query_time = 2- 可选:
log_queries_not_using_indexes = 1
- 分析工具
- 内置工具:
mysqldumpslow -s t /var/log/mysql/slow.log - 高级分析:
pt-query-digest /var/log/mysql/slow.log(来自 Percona Toolkit)
- 内置工具:
- 启用与阈值(在
- 错误日志
- 定位错误日志路径:
SHOW VARIABLES LIKE 'log_error'; - 重点关注启动失败、服务崩溃、死锁、权限异常等关键信息
- 定位错误日志路径:
- Performance Schema 与 Sys Schema
- Performance Schema:可对 I/O、锁、线程、SQL 语句等事件进行细粒度性能监控
- 示例:
SELECT EVENT_NAME, COUNT_STAR, SUM_TIMER_WAIT FROM performance_schema.events_waits_summary_global_by_event_name ORDER BY SUM_TIMER_WAIT DESC LIMIT 10;
- 示例:
- Sys Schema(MySQL 5.7+ 内置):提供更直观、更易读的性能分析视图
- 示例:
SELECT * FROM sys.statement_analysis ORDER BY a vg_latency DESC LIMIT 10; - 示例:
SELECT * FROM sys.user_summary;
将慢查询日志与 Performance Schema/Sys Schema 结合使用,可以同时定位“哪些 SQL 变慢了”和“数据库为什么会变慢”,是 MySQL 性能监控中非常实用的组合方案。
- 示例:
- Performance Schema:可对 I/O、锁、线程、SQL 语句等事件进行细粒度性能监控
三 第三方监控与可视化
- Prometheus + Grafana + mysqld_exporter
- 组件作用:Exporter 将 MySQL 监控指标以 Prometheus 格式暴露;Prometheus 负责定时抓取与时序存储;Grafana 用于可视化展示和告警配置
- 部署要点:为 Exporter 创建具备最小权限的数据库监控账号,配置
my.cnf或.my.cnf认证;Prometheus 抓取9104端口;Grafana 导入 MySQL 仪表盘(如 ID 7362)
- Percona Monitoring and Management(PMM)
- 特点:一体化 MySQL 监控平台,覆盖 MySQL/InnoDB、主从复制、查询分析(Query Analytics)以及操作系统指标,部署方便,开箱即用
- Zabbix
- 通过官方模板可监控连接数、QPS/TPS、复制延迟、InnoDB 缓冲池命中率等核心指标,适合已经使用 Zabbix 运维体系的团队
- 轻量实时与系统级工具
- Netdata:开箱即用的实时可视化监控工具,内置 MySQL 插件,访问 https://localhost:19999
- Glances:面向系统全局的监控工具,支持 MySQL 插件(快捷键 Shift+M 查看 MySQL)
- Innotop:类似 top 的交互式 MySQL 实时监控工具,重点关注 InnoDB、锁、事务和查询表现
上述监控方案可根据业务规模和复杂度灵活选择:轻量级场景可优先使用 Netdata、Glances、Innotop;需要统一告警和图形化平台时,更推荐 PMM 或 Prometheus+Grafana。
四、关键指标与告警阈值示例
五 快速上手与自动化巡检
- 5 分钟快速巡检脚本
- 连接与线程:
mysql -e "SHOW GLOBAL STATUS LIKE 'Threads_connected';" -s -N - 慢查询:
mysql -e "SHOW GLOBAL STATUS LIKE 'Slow_queries';" -s -N - InnoDB 锁:
mysql -e "SHOW GLOBAL STATUS LIKE 'Innodb_row_lock%';" -s -N - 错误日志尾部:
sudo tail -n 50 $(mysql -s -N -e "SHOW VARIABLES LIKE 'log_error';") - 库表容量:
mysql -e "SELECT table_schema, SUM(data_length/1024/1024) AS data_mb, SUM(index_length/1024/1024) AS idx_mb FROM information_schema.tables GROUP BY table_schema;" -s -N
- 连接与线程:
- 建议的自动化
- 建议按每日或每小时采集上述指标,写入内部数据库或推送到 Prometheus/Grafana;慢查询日志可每日使用 pt-query-digest 生成分析报告并归档保存
- 每周运行 MySQLTuner 获取数据库配置优化建议,并先在测试环境验证后再部署到生产环境
- 对关键阈值配置 告警(如连接数、复制延迟、缓冲池命中率、磁盘 I/O)
通过“脚本巡检 + 可视化监控平台 + 定期性能报告”的方式,可以建立起 MySQL 监控、分析与持续优化的完整闭环机制。
