MySQL越來越被更多企業接受,隨著企業發展,MySQL存儲數據日益膨脹,MySQL的性能分析、監控預警議題越來越多,本文主要介紹MySQL日常監控的一些指標及簡要的空方法。
1 負載狀況監控
最大連接上限 (max_connections)
mysql> show variables like 'max_conn%'
在使用MySQL數據庫的時候,經常會遇到這麼一個問題,就是“Can not connect to MySQL server. Too many connections”-mysql 1040錯誤,這是因為訪問MySQL且還未釋放的連接數目已經達到MySQL的上限
歷史最大連接數 (Max_used_connections)
Mysql> show status like 'Max_used%';
這個參數的值,為設置最大連接數上限提供了參考依據
當前連接數 (Threads_connected)
mysql> show status like 'Threads_con%';
當前數據庫的連接數量,此值如果不斷增大,那麼需要注意及時調整最大連接上限值
創建的總線程數 (Threads_created)
Mysql> show status like 'Threads_created';
Mysql> show status like 'connections';
如果Threads_created除以connections的值大於10%,說明線程連接緩存命中率偏低,應該增加thread_cache_size的大小
2 性能監控指標
QPS(每秒Query量)
QPS = Questions(or Queries) / seconds
mysql > show global status like 'Question%';
TPS(每秒事務量)
TPS = (Com_commit + Com_rollback) / seconds
mysql > show global status like 'Com_commit';
mysql > show global status like 'Com_rollback';
具體如何計算QPS和TPS,請參考 http://blog.itpub.net/22664653/viewspace-767265/
3 主從復制狀態監控
查看主從不同步的方法
(1) 通過Seconds_Behind_Master查看
mysql> show slave status\G;
通過show slave status查看到的Seconds_Behind_Master,從字面上來看,他是slave落後master的秒數,一般情況下,也確實這樣,我們可以通過Seconds_Behind_Master數字查看slave是否落後於master。官方對Seconds_Behind_Master闡述如下:In essence, this field measures the time difference in seconds between the slave SQL thread and the slave I/O thread.很清晰的表明,該值是SQL thread、I/O thread.之間的差值。
當在很快的網絡連接情況下,I/O thread. 能很快的從master的binlog中同步sql到slave的relay-log裡,這樣,這個值就能基本確定的slave落後master的秒數
當網絡環境特別糟糕的情況下,這個值確會讓我們產生幻覺,I/O thread同步很慢,每次同步過來,SQL thread就能立即執行,這樣,我們看到的Seconds_Behind_Master是0,而真正的,slave已經落後master很多很多。
(2) 通過查看中繼日志的數量來判斷,如果你發現I/O,sql線程都是ok的,但是有大量的relay-bin*日志在等待著sql線程處理,這時基本上可以判斷從庫已落後的主從很遠
4 慢查詢語句提取
Mysql> show variables like “slow_query_log”;
如果狀態為on,表示開啟,如果狀態為off,那麼通過“set global slow_query_log=on;”命令開啟。
用工具mysqldumpslow提取慢查詢語句(top 10)
/path/mysqldumpslow -s c -t 10 /database/mysql/slow-log
這會輸出記錄次數最多的10條SQL語句,其中:
· -s, 是表示按照何種方式排序,c、t、l、r分別是按照記錄次數、時間、查詢時間、返回的記錄數來排序,ac、at、al、ar,表示相應的倒敘;
· -t, 是top n的意思,即為返回前面多少條的數據;
· -g, 後邊可以寫一個正則匹配模式,大小寫不敏感。