MySQL 監控-innotop

innotop 編寫者Balon Schwartz,《高性能MySQL》的作者之一。
innotop的作用爲實時地展示服務器正在發生的事情,監控innodb,監控多個MySQL實例,是一款MySQL運維和問題定位分析的工具。

具體特性 :
事務列表可以顯示Inoodb當前的全部事務
查詢列表可以顯示當前正在運行的查詢
可以顯示當前鎖和鎖等待的列表
以相對值顯示服務器狀態和變量的彙總信息
有多種模式可用來顯示Innodb內部信息(緩衝區、死鎖、外鍵錯誤、I/O活動、行操作、信號量)
複製監控,將主服務器和從服務器的狀態顯示在一起
顯示任意服務器變量的模式
服務器組可以更方便地組織多臺服務器
在命令行腳本下可以使用非交互式模式

本文主要介紹innotop的常用方式-主用於現網MySQL服務器的問題監控和定位。

下載地址:https://github.com/innotop/innotop

# unzip innotop-master.zip
# cd innotop-master
# perl Makefile.PL

Checking if your kit is complete...
Looks good
Warning: prerequisite Term::ReadKey 2.1 not found.
Writing Makefile for innotop

報以上錯誤,缺少ReadKey包。

# yum install -y perl-TermReadKey
# perl Makefile.PL

Writing Makefile for innotop
# make install
cp innotop blib/script/innotop
/usr/bin/perl -MExtUtils::MY -e 'MY->fixin(shift)' -- blib/script/innotop
Manifying blib/man1/innotop.1
Installing /usr/local/share/man/man1/innotop.1
Installing /usr/local/bin/innotop
Appending installation info to /usr/lib64/perl5/perllocal.pod
安裝完成
# innotop



  1. 監控方式
    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           

輸入?,則進入幫助頁面

innotop.jpg

第一部分爲可切換的模式-輸入相應的大寫字母
第二部分可進行的操作-輸入相應的小寫字母
第三部分 其他-配置類操作

  1. 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

  1. 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: 每秒非哈希索引的量

  1. 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

  1. 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等,可滿足最基本的運維監控和問題定位,且不用記和輸入多次命令噢,實用性很強。



作者:灼灼2015
鏈接:https://www.jianshu.com/p/b8508fe10b8e
來源:簡書
簡書著作權歸作者所有,任何形式的轉載都請聯繫作者獲得授權並註明出處。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章