阅读量:57
一、原生命令行工具:快速查看基础性能
- SHOW STATUS/SHOW VARIABLES:
SHOW STATUS可查看MySQL服务器运行状态(如连接数、查询次数、缓存命中率等),SHOW VARIABLES用于查看配置参数(如max_connections、innodb_buffer_pool_size)。结合两者可分析服务器负载情况,例如通过SHOW STATUS LIKE 'Threads_connected'查看当前连接数,对比max_connections判断是否需要扩容。 - SHOW PROCESSLIST:实时显示当前正在执行的查询,包括查询ID、用户、主机、执行状态、运行时间等。可通过
SHOW FULL PROCESSLIST查看完整SQL语句,快速定位长时间运行的慢查询(如运行时间超过long_query_time的查询)。 - mysqladmin:轻量级命令行工具,
mysqladmin -u root -p status可快速获取服务器状态摘要(如连接数、查询每秒、缓冲池命中率);mysqladmin extended-status可查看更详细的计数器信息,适合自动化监控脚本。
二、第三方命令行工具:深入分析性能瓶颈
- MySQLTuner:通过分析MySQL配置和运行状态,提供优化建议(如调整
innodb_buffer_pool_size、query_cache_size等参数)。安装:sudo apt install mysqltuner,运行:mysqltuner --user root --ask-pass,输出结果包含内存使用、存储引擎配置、查询缓存等方面的建议。 - Percona Toolkit:包含
pt-query-digest(分析慢查询日志,找出最耗时的查询)、pt-mysql-summary(汇总MySQL服务器状态)、pt-table-checksum(检查主从数据一致性)等工具。安装:下载tar包解压后,将bin/目录下的工具复制到/usr/local/bin/即可使用。 - Innotop:专为InnoDB引擎设计的实时监控工具,显示InnoDB缓冲池使用情况、锁等待、事务状态等深度指标。安装:需通过
cpan或手动编译安装(sudo cpan App::Innotop),运行:innotop -u root -p your_password。
三、可视化监控方案:实时展示与报警
- Prometheus + Grafana:
- Prometheus:开源时间序列数据库,用于收集和存储MySQL指标;
- mysqld_exporter:轻量级导出器,将MySQL指标转换为Prometheus可识别的格式。安装:下载
mysqld_exporter并配置--config.my-cnf指向MySQL配置文件(如~/.my.cnf),通过systemd启动服务; - Grafana:可视化平台,添加Prometheus作为数据源,导入MySQL监控仪表板(如官方提供的“MySQL Overview”),可展示连接数、查询速率、InnoDB缓冲池命中率等指标的实时趋势。
- Zabbix:企业级网络监控工具,支持MySQL性能监控(如连接数、CPU使用率、磁盘I/O、慢查询数量)。通过Zabbix Agent采集数据,配置触发器(如连接数超过阈值时报警),适合大规模集群监控。
- Netdata:轻量级实时监控工具,无需额外配置即可监控MySQL性能(如QPS、TPS、缓冲池使用率、锁等待时间)。安装:
sudo apt install netdata,访问http://server_ip:19999即可查看实时监控面板。
四、日志管理与分析:排查历史问题
- 慢查询日志:记录执行时间超过
long_query_time(默认10秒)的查询,用于分析性能瓶颈。开启方法:在/etc/mysql/mysql.conf.d/mysqld.cnf中添加slow_query_log = 1、slow_query_log_file = /var/log/mysql/slow.log、long_query_time = 2(单位:秒),重启MySQL生效。使用pt-query-digest分析慢查询日志:pt-query-digest /var/log/mysql/slow.log,输出最耗时的查询及优化建议。 - 错误日志:记录MySQL服务器错误信息(如启动失败、连接错误、死锁),位置通常为
/var/log/mysql/error.log。使用tail -f /var/log/mysql/error.log实时查看,或通过grep过滤特定错误(如grep "Deadlock" /var/log/mysql/error.log)。