mysqladmin命令
MySQL自带的命令行工具,可快速查看服务器状态(如运行时间、连接数、查询数)。常用命令:
mysqladmin -u root -p status # 显示基本状态(Uptime、Threads、Queries等)
mysqladmin -u root -p extended-status # 显示详细状态变量
可通过crontab定期运行(如每5分钟),实现自动化监控。
SHOW STATUS/SHOW PROCESSLIST命令
在MySQL命令行中执行,获取更详细的性能指标:
SHOW STATUS; -- 查看所有状态变量(如连接数、缓存命中率)
SHOW PROCESSLIST; -- 查看当前所有进程(识别长时间运行或阻塞的查询)
可结合grep过滤关键信息(如SHOW PROCESSLIST WHERE Time > 60;查看超时查询)。
系统资源监控命令
通过Linux系统工具间接监控MySQL资源占用:
top/htop:查看MySQL进程的CPU、内存使用率;iostat -x 1(需安装sysstat):监控磁盘I/O(如await、%util,判断磁盘瓶颈);netstat/ss -tuln | grep 3306:查看MySQL端口(3306)的连接状态(如ESTABLISHED连接数)。Performance Schema
MySQL内置的性能监控框架,通过查询performance_schema数据库中的表获取详细指标(如线程状态、锁等待、InnoDB缓冲池使用情况)。示例查询:
SELECT * FROM performance_schema.events_statements_summary_by_digest
ORDER BY SUM_TIMER_WAIT DESC LIMIT 10; -- 查看最耗时的SQL语句
需提前在my.cnf中启用(performance_schema=ON)。
慢查询日志
记录执行时间超过阈值的查询,帮助定位性能瓶颈。配置步骤:
/etc/mysql/my.cnf,添加:[mysqld]
slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow-queries.log
long_query_time = 2 -- 超过2秒的查询视为慢查询
sudo systemctl restart mysql。mysqldumpslow工具分析日志(如mysqldumpslow -s t /var/log/mysql/slow-queries.log)。Prometheus + Grafana + MySQL Exporter
wget https://github.com/prometheus/mysqld_exporter/releases/download/v0.13.0/mysqld_exporter-0.13.0.linux-amd64.tar.gz
tar xvf mysqld_exporter-*.tar.gz
cd mysqld_exporter-* && ./mysqld_exporter --config.my-cnf=/etc/mysql_exporter/my.cnf &
/etc/prometheus/prometheus.yml):scrape_configs:
- job_name: 'mysql'
static_configs:
- targets: ['localhost:9104']
Zabbix
企业级开源监控解决方案,支持MySQL性能指标(如连接数、查询性能、锁等待)的监控与告警。安装步骤:
sudo apt install zabbix-server-mysql zabbix-frontend-php;Percona Monitoring and Management (PMM)
专为MySQL/MariaDB设计的综合监控工具,提供实时性能监控、慢查询分析、InnoDB引擎诊断等功能。安装步骤:
pmm-admin add mysql --username=root --password=your_password);Innotop
命令行工具,专为InnoDB引擎设计,实时监控InnoDB缓存、I/O、复制状态、用户统计等。安装与使用:
sudo apt install innotop
innotop -u root -p your_password # 输入MySQL凭证后进入交互界面
支持多视图切换(如“Q”查看查询列表、“C”查看InnoDB缓存)。
以上方法覆盖了从基础到高级的MySQL性能监控需求,可根据实际场景选择合适的工具组合(如小型环境用mysqladmin+top,企业环境用Prometheus+Grafana+PMM)。