Linux环境下监控MySQL性能的方法可分为内置工具、命令行工具、第三方可视化工具及日志分析四大类,以下是具体方案:
Performance Schema是MySQL原生的性能监控框架,用于收集数据库运行时的低级指标(如SQL执行、锁等待、内存使用等)。
/etc/mysql/my.cnf或/etc/mysql/mysql.conf.d/mysqld.cnf),添加performance_schema=ON,重启MySQL服务;登录MySQL验证状态(SHOW VARIABLES LIKE 'performance_schema';,结果应为ON)。SELECT * FROM performance_schema.events_statements_current;SELECT * FROM performance_schema.events_statements_summary_by_digest ORDER BY COUNT_STAR DESC LIMIT 10;SELECT * FROM performance_schema.events_waits_summary_global_by_event_name;通过SQL命令可直接获取服务器状态、配置及进程信息:
SHOW STATUS:显示服务器运行状态(如Threads_connected当前连接数、Queries总查询数、Innodb_buffer_pool_read_hits缓冲池命中率);SHOW VARIABLES:查看服务器配置(如max_connections最大连接数、innodb_buffer_pool_size缓冲池大小);SHOW PROCESSLIST:列出当前所有连接及执行的查询(可结合WHERE筛选慢查询,如WHERE TIME > 5);SHOW ENGINE INNODB STATUS:查看InnoDB存储引擎的详细状态(如事务、锁、缓冲池信息);EXPLAIN:分析SQL执行计划(如索引使用情况、扫描行数),帮助优化慢查询。类似Linux top命令的实时监控工具,专注于InnoDB引擎的性能指标(如事务、锁、缓冲池命中率)。
sudo apt install innotop(Debian/Ubuntu)或sudo yum install innotop(RHEL/CentOS);innotop -u root -p 'password'登录,常用快捷键:q(查询信息)、t(事务信息)、m(内存使用)、s(锁信息)。实时显示MySQL线程、查询及运行时间的轻量级工具,类似top的界面风格。
sudo apt install mytop(Debian/Ubuntu)或sudo yum install mytop(RHEL/CentOS);mytop --prompt,输入MySQL root密码即可查看实时监控界面。一键分析MySQL性能并给出优化建议的工具(如调整缓冲区大小、查询缓存配置)。
wget http://mysqltuner.pl -O mysqltuner.pl,chmod +x mysqltuner.pl;./mysqltuner.pl,按提示输入MySQL root密码,工具会输出性能评分及优化建议(如“Query cache efficiency: 20%,建议增大query_cache_size”)。开源的监控与可视化组合,适合大规模环境:
sudo apt install prometheus);wget https://github.com/prometheus/mysqld_exporter/releases/download/v0.14.0/mysqld_exporter-0.14.0.linux-amd64.tar.gz,解压后运行./mysqld_exporter);prometheus.yml,添加MySQL Exporter的job_name及scrape_interval);sudo apt install grafana),配置Prometheus为数据源,导入MySQL监控模板(如Grafana官方的“MySQL”模板)。专为MySQL设计的专业监控工具,提供深度性能分析(如慢查询趋势、InnoDB缓冲池使用率)。
sudo apt install pmm-server),配置PMM Server及PMM Client;http://localhost:8080),添加MySQL实例,查看实时监控面板(如“Overview”“Performance”“Queries”)。多功能系统监控工具,支持MySQL插件扩展,适合快速查看系统及数据库状态。
sudo apt install glances;glances启动,默认按Shift + M切换到MySQL监控界面,查看连接数、查询速率、缓冲池使用率等指标。记录执行时间超过阈值的SQL语句,用于定位慢查询瓶颈。
slow_query_log=ON、long_query_time=2(阈值,单位秒)、slow_query_log_file=/var/log/mysql/slow.log,重启MySQL;mysqldumpslow(MySQL自带)或pt-query-digest(Percona Toolkit)分析日志(如mysqldumpslow -s t /var/log/mysql/slow.log按执行时间排序)。记录所有执行的SQL语句,用于审计或排查异常查询(生产环境慎用,会影响性能)。
general_log=ON、general_log_file=/var/log/mysql/mysql.log,重启MySQL;tail -f /var/log/mysql/mysql.log。