mysql -結(jié)合例子進(jìn)行 日志 分析以及 mysqldumpslow 監(jiān)控分析-04
一、設(shè)計(jì)腳本
1、設(shè)計(jì)一個(gè)Jmeter腳本,調(diào)用接口查詢數(shù)據(jù),數(shù)據(jù)庫(kù)表數(shù)據(jù)量大且未加索引,壓測(cè)結(jié)果TPS低,響應(yīng)時(shí)間長(zhǎng)
2、 執(zhí)行Jmeter 腳本
[root@demo testdemo]# /usr/local/apache-jmeter-5.1.1/bin/jmeter -n -t tomcat-2.jmx

3、服務(wù)器 top 命名 查看哪個(gè)應(yīng)用CPU高

二、日志分析
1、命令行查看慢日志
(補(bǔ)充 如果rm -f刪除了slow.log文件,需要重啟應(yīng)用和mysql服務(wù),然后才會(huì)重新生成slow.log文件,如果slow.log 沒(méi)有生成,則重啟應(yīng)用和mysql 服務(wù))
[root@demo ~]# tail -f /mysql/logs/slow.log

三、mysqldumpslow 監(jiān)控分析
1、查看 mysqldumpslow 幫助文檔

mysqldumpslow 參數(shù)詳解表
| 參數(shù) | 縮寫(xiě) | 含義 | 使用示例 | 適用場(chǎng)景 |
|---|---|---|---|---|
--verbose |
-v |
顯示詳細(xì)解析過(guò)程 | mysqldumpslow -v /var/log/mysql-slow.log |
調(diào)試時(shí)查看工具如何處理日志 |
--debug |
-d |
啟用調(diào)試模式(輸出更詳細(xì)的信息) | mysqldumpslow -d /var/log/mysql-slow.log |
排查工具解析異常時(shí)使用 |
--help |
無(wú) | 顯示幫助信息 | mysqldumpslow --help |
快速查閱參數(shù)列表 |
-s ORDER |
無(wú) | 指定排序規(guī)則:al: 平均鎖時(shí)間ar: 平均返回行數(shù)at: 平均查詢時(shí)間(默認(rèn))c: 出現(xiàn)次數(shù)l: 總鎖時(shí)間r: 總返回行數(shù)t: 總查詢時(shí)間 |
mysqldumpslow -s c /var/log/mysql-slow.log |
按頻率排序找出高頻慢查詢 |
-r |
無(wú) | 反轉(zhuǎn)排序結(jié)果(默認(rèn)降序,-r改為升序) |
mysqldumpslow -s t -r /var/log/mysql-slow.log |
查看耗時(shí)最短的查詢 |
-t NUM |
無(wú) | 僅顯示前 NUM 條結(jié)果 |
mysqldumpslow -t 10 /var/log/mysql-slow.log |
快速定位 Top N 慢查詢 |
-a |
無(wú) | 不抽象化數(shù)字(默認(rèn)將數(shù)字替換為 N,字符串替換為 S) |
mysqldumpslow -a /var/log/mysql-slow.log |
需查看具體數(shù)值時(shí)(如 WHERE id=100) |
-n NUM |
無(wú) | 抽象化數(shù)字時(shí)至少保留 NUM 位(默認(rèn)全部抽象) |
mysqldumpslow -n 5 /var/log/mysql-slow.log |
保留長(zhǎng)數(shù)字的部分特征(如 user_id=12345 顯示為 user_id=N2345) |
-g PATTERN |
無(wú) | 僅分析包含指定關(guān)鍵詞的查詢 | mysqldumpslow -g "ORDER BY" /var/log/mysql-slow.log |
篩選特定類(lèi)型的慢查詢(如排序、連接操作) |
-h HOSTNAME |
無(wú) | 匹配日志文件名中的主機(jī)名(支持通配符 *) |
mysqldumpslow -h "db-server-*" /var/log/mysql-slow.log |
多主機(jī)日志合并時(shí)按主機(jī)名過(guò)濾 |
-i NAME |
無(wú) | 匹配實(shí)例名(適用于多實(shí)例環(huán)境) | mysqldumpslow -i "instance1" /var/log/mysql-slow.log |
MySQL 多實(shí)例部署時(shí)區(qū)分日志 |
-l |
無(wú) | 不從總時(shí)間中減去鎖時(shí)間(默認(rèn)會(huì)減去) | mysqldumpslow -l /var/log/mysql-slow.log |
需單獨(dú)分析鎖等待時(shí)間時(shí) |
返回記錄最多的10條:mysqldumpslow -s r -t 10 /mysql/logs/slow.log
訪問(wèn)次數(shù)最多的10條:mysqldumpslow -s c -t 10 /mysql/logs/slow.log
返回記錄最多的、包含select的10條: mysqldumpslow -s r -t 10 -g 'select' /mysql/logs/slow.log

查詢出來(lái)的結(jié)果分析解釋?zhuān)?/p>
count:sql出現(xiàn)次數(shù)
Time:sql執(zhí)行時(shí)間 (750次總的時(shí)長(zhǎng))
Lock : 鎖時(shí)間
Rows:結(jié)果返回行數(shù)
root: 執(zhí)行用戶
select id,username,job,from users where id -N : 執(zhí)行的sql

浙公網(wǎng)安備 33010602011771號(hào)