innotop 編寫者Balon Schwartz,《高性能MySQL》的作者之一。
innotop的作用為實時地展示服務器正在發生的事情,監控innodb,監控多個MySQL實例,是一款MySQL運維和問題定位分析的工具。
具體特性 :
事務列表可以顯示Inoodb當前的全部事務
查詢列表可以顯示當前正在運行的查詢
可以顯示當前鎖和鎖等待的列表
以相對值顯示服務器狀態和變量的匯總信息
有多種模式可用來顯示Innodb內部信息(緩沖區、死鎖、外鍵錯誤、I/O活動、行操作、信號量)
復制監控,將主服務器和從服務器的狀態顯示在一起
顯示任意服務器變量的模式
服務器組可以更方便地組織多臺服務器
在命令行腳本下可以使用非交互式模式
本文主要介紹innotop的常用方式-主用于現網MySQL服務器的問題監控和定位。
- 監控方式
innotop -uroot -proot -h127.0.0.1
Uptime MaxSQL ReplLag QPS Cxns Run Miss Lock Tbls Repl SQL
2d6h 10.23 316 0.00 0 64
輸入?,則進入幫助頁面
第一部分為可切換的模式-輸入相應的大寫字母
第二部分可進行的操作-輸入相應的小寫字母
第三部分 其他-配置類操作
- Q Query List
innodb中最常用的模式,輸入大寫Q,進入該模式的視圖頁面。
[RO] Query List (? for help) localhost, 17d, 10.47 QPS, 58/1/59 con/run/cac thds, 5.6.29-log
When Load Cxns QPS Slow Se/In/Up/De% QCacheHit KCacheHit BpsIn BpsOut
Now 0.05 58 10.47 0 32/ 0/ 0/ 0 0.00% 100.00% 5.60k 20.38k
Total 0.00 7.81k 14.99 11.01k 36/ 2/ 2/ 0 0.00% 99.99% 2.55k 20.79k
Cmd ID State User Host DB Time Query
參數詳解
Load 是負載
QPS (Query Per Second) 表示每秒的查詢率
Slow 代表慢查詢的個數
Se/In/Up/De%: 查詢/插入/更新/刪除的比例
QCacheHit:查詢緩沖的命中率
KCacheHit:索引的命中率
BpsIn (bytes Per Second in) 每秒輸入的字節數
BpsOut(bytes Per Second Out)每秒輸出的字節數
在這個頁面,可輸入e、f、o等鍵
e鍵 : 按e并輸入thread ID,就能顯示該SQL的執行計劃
f鍵 : 顯示當前正在運行的完整SQL語句
o鍵 : 顯示當前SQL被mysql內部優化后的SQL
- B InnoDB Buffers
模式顯示有關InnoDB Buffer Pool,頁面統計,插入緩沖,自適應哈希索引。
使用的是show innodb status的數據。
____________________________ Buffer Pool _____________________________
Size Free Bufs Pages Dirty Pages Hit Rate Memory Add'l Pool
63.99k 13207 48854 0 1000 / 1000 1.02G 0
____________________ Page Statistics _____________________
Reads Writes Created Reads/Sec Writes/Sec Creates/Sec
21299 240690 29436 0.00 0.61 0.00
______________________ Insert Buffers ______________________
Inserts Merged Recs Merges Size Free List Len Seg. Size
0 0 1 1316 1318
__________________ Adaptive Hash Index __________________
Size Cells Used Node Heap Bufs Hash/Sec Non-Hash/Sec
2.26M 3467 0.04 139.75
Buffer Pool
Size : 某sql使用Buffer Pool的大小
Free Bufs : Innodb_buffer_pool_pages_free的值,空頁數;
Pages: Innodb_buffer_pool_pages_data的值, 包含數據的頁數(臟或干凈)
Dirty Pages : Innodb_buffer_pool_pages_dirty的值,當前的臟頁數
Hit Rate: 命中率
Memory : Innodb_buffer_pool_size 的值.
Add'l Pool : innodb_additional_mem_pool_size的值
Page Statistics
Reads : Innodb_pages_read 的值,讀取的頁數
Writes : Innodb_pages_written 的值,寫入的頁數
Created : Innodb_pages_created 的值,創建的頁數
Reads/Sec : 每秒讀取的頁數
Writes/Sec : 每秒寫入的頁數
Creates/Sec : 每秒創建的頁數
Insert Buffers
Inserts : 表示執行insert 次數
Merged Recs : 表示執行 insert 索引樹合并的次數
Merges: insert 語句合并的次數
Size: 寫緩沖的大小
Free List Len : 空閑列表長度
Seg. Size: 段塊大小
Adaptive Hash Index 自適應哈希索引
Size: 哈希索引占用大小
Cells Used:
Node Heap Bufs:
Hash/Sec: 每秒哈希索引量
Non-Hash/Sec: 每秒非哈希索引的量
- D InoDB Deadlocks
顯示innodb產生的死鎖,和產生死鎖的語句。
______________________ Deadlock Transactions ______________________
ID Timestring User Host Victim Time Undo LStrcts Query Text
____________________ Deadlock Locks ____________________
ID Waiting Mode DB Table Index Special Ins Intent
參數詳解:
ID:連接線程ID號
Timestring : 死鎖發生的時間
User: 用戶名
Host:主機
Victim:Yes表示這個死鎖SQL被強行終止了.No表示這個SQL正在執行
Time : 這條SQL的運行時間
Undo : 回滾
LStrcts: 不知道是什么的縮寫
Query Text : 死鎖執行的SQL
- I InnoDB I/O Info
顯示InnoDB的I / O統計,包括I / O線程,掛起的I / O,文件I / O,日志統計
_________________________ I/O Threads __________________________
Thread Purpose Thread Status
0 insert buffer thread waiting for completed aio requests
1 log thread waiting for completed aio requests
2 read thread waiting for completed aio requests
3 read thread waiting for completed aio requests
4 read thread waiting for completed aio requests
5 read thread waiting for completed aio requests
6 write thread waiting for completed aio requests
7 write thread waiting for completed aio requests
8 write thread waiting for completed aio requests
9 write thread waiting for completed aio requests
____________________________ Pending I/O _____________________________
Async Rds Async Wrt IBuf Async Rds Sync I/Os Log Flushes Log I/Os
0 0 0 0
________________________ File I/O Misc _________________________
OS Reads OS Writes OS fsyncs Reads/Sec Writes/Sec Bytes/Sec
22142 1163454 982096 0.00 0.00 0
_____________________ Log Statistics ______________________
Sequence No. Flushed To Last Checkpoint IO Done IO/Sec
20178545268 20178545268 20178545268 870538 0.00
Pending I/O 掛起的IO
Async Rds : Asynchronous Reads 異步讀
Async Wrt: : Asynchronous Write 異步寫
IBuf Async Rds: : Innodb Buffer Asynchronous Reads 緩沖池的異步讀
Sync I/Os: : Asynchronous Input/Output:的異步
Log Flushes : log Flushes
Log I/Os : Input/Output 異步寫入/讀出日志
File I/O Misc(文件IO)
OS Reads: 系統I./O的讀
OS Writes: 系統.I/O的寫
OS fsyncs: 系統文件同步
Reads/Sec: 每秒多少次讀
Writes/Sec: 每秒多少次寫
Bytes/Sec: 每秒多少字節的輸入輸出
Log Statistics(日志統計)
Sequence No: Innodb buffer 里面的 LSN 號
Flushed To: 刷新到事務日志的LSN號
Last Checkpoint:: LSN的檢查點
IO Done: 多少I/O已經完成
IO/Sec: 每秒I/O次數
通過以上的幾個命令就可以快速地找到死鎖,InnoDB buffer使用情況,I/O的使用情況,當前正在運行的SQL等,可滿足最基本的運維監控和問題定位,且不用記和輸入多次命令噢,實用性很強。
PS: innotop安裝 yum install innotop (本人環境:centos6.2 和 centos7)