https://mp.weixin.qq.com/s/1X_uZaajImRRmpAsdLsNGw
mysql可以說如今最為流行的數據庫了,雖然現在nosql的風頭正盛。但我想很多公司重要的業務數據不會用nosql去跑。而在這些方面mysql似乎的使用更盛(開源免費,讓我花錢去買oracle,我想我是不會買的)。君不見taobao、騰訊、facebook這些牛X的IT公司們都自己去修改mysql,將核心業務數據運行在mysql之下。
而平時要對mysql的運行性能進行監控的話工具也非常多。強大復雜的有 oracle官方提供的mysql 企業監控器(當然是收費的),當然開源的配置nagios、cacti上運行的mysql-monitor插件也不少。而想要實時的觀察的話,也有mytop、mycheckpoint(繪圖顯示)、mtop(托管在sourceforge,從04年至今沒見更新了。還有一個mongodb 的監控工具也要mtop,托管在github)等等。
Linux 有個非常有用的
top 命令,可以查看操作系統的性能狀態,mytop 命令類似 top 命令,界面結構也類似,只是 mytop 顯示的是 mysql 的狀態信息,例如我們非常關心的
QPS 指標
使用說明
mytop 的結果信息主要分為上下兩個部分,上面是各項指標,下面是線程列表
第1行很簡單,就是版本信息
第2行是整體信息
Queries 服務器處理過的query總數
qps 每秒處理的query數量的平均值
Slow 慢查詢總數
Se/In/Up/De(%) Select,Insert,Update,Delete 各自的占比
第3行是實時信息,本刷新周期內的信息統計,刷新周期是在配置文件中指定
qps now 本周期內的每秒處理query的數量
Slow qps 本周期內的每秒慢查詢數量
Threads 當前連接線程數量,后面括號內的第一個數字是active狀態的線程數量,第二個數字是在線程緩存中的數量
最后一列是本周期內的 Select,Insert,Update,Delete 各自的占比
Key Efficiency 表示有多少key是從緩存中讀取,而不是從磁盤讀取的
Bps in/out 表示mysql平均的流入流出數據量
Now in/out
是本周期內的流入流出數據量
剩下的就是線程信息列表
列出了當前的mysql線程,根據idle狀態時間排序,通過o 鍵可以選擇升序或降序
列表中顯示出各線程的詳細信息,例如 線程ID、用戶名、客戶端的地址、連接的數據庫名稱、詳細查詢語句
會發現 "show full processlist" 一直都在,因為 mytop 會使用這個語句收集 mysql 信息
輔助命令
mytop 提供了一些有用的命令,在運行界面按下相應按鍵即可
例如按下?,會進入幫助界面
其他示例:
按鍵 h 可以根據客戶端地址進行過濾
按鍵s 可以根據用戶名進行過濾
按鍵k 可以殺死某個線程
按鍵m 進入QPS模式,只是動態顯示QPS數量
安裝配置
安裝
以 centos7 為例,執行以下幾個命令即可
rpm -ivh http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-8.noarch.rpm yum install yum-plugin-protectbase.noarch -y yum install mytop -y
配置
vi /root/.mytop
寫入如下內容:
host=localhost user=root pass=111111 db=mysql port=3306 socket=/tmp/mysql.sock delay=5 batchmode=0 color=1 idle=1
保存退出
其中就是mysql的連接信息和基本配置
pass是密碼,如果感覺不安全,可以不指定,在執行 mytop 命令時再輸入,執行方式:mytop --prompt
delay 指定 mytop 多長時間刷新一次,也就是前面所說的刷新周期
安裝配置完成后,執行mytop 命令就可以了