Mysql问题分析工具

常用工具

top、iostat查看CPU/IO情况
慢查询日志+explain
获取数据库的各种运行状态,如”show engine innodb status”, 查询information_schema库里的INNODB_TRX、PROCESSLIST等状态表
tcpdump
strace

1
# top -d0.5 -c

以0.5秒频率刷新,查看mysql的CPU使用情况,主要是看下cpu占用率。

1
# iostat -txm 1

观察磁盘使用情况,util使用率越高,表示磁盘越繁忙

慢查询

慢查询日志slowlog,使用mysqldumpslow可以统计分析出最消耗时间的TopN。
得到具体语句后,使用explain进行分析,进而得到优化方法。

数据库状态

查看所有连接的运行情况

1
mysql> show full processlist;

或者

1
mysql> select * from information_schema.processlist;

查看innodb的实时状态,关注cache命中率、读写次数、有无死锁等

1
mysql> show  engine innodb status \G

查看事务运行情况

1
mysql> select * from information_schema.innodb_trx;

网络及系统分析

tcpdump —— 抓取相关网络包
例如:

1
# tcpdump host 10.4.12.8 and port 3306 -i eth0 -w 10.4.12.8.pcap

strace —— 查看进程的系统调用
例如:

1
# strace -p 12345    # 12345为目标进程pid
分享到 评论