mysql常見監控項

 1、MySQL服務運行狀態

約定所有MySQL服務都必須以ip1(內網ip)來綁定,每個機器只有一個ip1,可以有多個端口,即多個MySQL Server。采集程序讀取ip端口信息文件來判斷server是否存在。

sockParam=`ps aux | grep -P "mysqld.*--port=${port}" | grep -oP " --socket.*\.sock"`? # 空則獲取不到該服務器端口mysql socket配置,請檢查mysql配置是否正確
MYSQL="/usr/local/mysql/bin/mysql -hlocalhost --port=${port} ${sockParam} -u${user} -p${password} "
MYSQL_ADMIN="/usr/local/mysql/bin/mysqladmin -hlocalhost --port=${port} ${sockParam} -u${user} -p${password} "
curStatus=`${MYSQL} -e"show global status"`? # 空則是獲取不到該服務器mysql狀態,請檢查mysql是否正常運行
if [ -z "${curStatus}" ]
then
? ? portExists=0
else
? ? echo "${curStatus}" >> ${curFile}
? ? portExists=1

  2、連接數

${MYSQL_ADMIN} processlist -v | wc -l

  3、線程數

grep 'Threads_connected' ${curFile} | awk '{print $2}'

  4、慢查詢數

grep 'Slow_queries' ${curFile} | awk -F ' ' '{print $2}'

需要計算兩次的慢查詢次數得到差值,等于最近1分鐘的慢查詢次數。上次數據保存在last.cache。

  5、打開表數

grep 'Open_tables' ${curFile} | awk -F ' ' '{print $2}'

  6、每秒執行select數

grep 'Com_select' ${curFile} | awk -F ' ' '{print $2}'

需要計算兩次的慢查詢次數得到差值除以時間差,等于最近1分鐘的執行數量。上次數據保存在last.cache。  

  7、每秒執行delete數

grep 'Com_delete' ${curFile} | grep -v 'multi' | awk -F ' ' '{print $2}'

需要計算兩次的慢查詢次數得到差值除以時間差,等于最近1分鐘的執行數量。上次數據保存在last.cache。

  8、每秒執行insert數

grep 'Com_insert' ${curFile} | grep -v 'select' | awk -F ' ' '{print $2}'

需要計算兩次的慢查詢次數得到差值除以時間差,等于最近1分鐘的執行數量。上次數據保存在last.cache。

  9、每秒執行update數

grep 'Com_update' ${curFile} | grep -v 'multi' | awk -F ' ' '{print $2}'

需要計算兩次的慢查詢次數得到差值除以時間差,等于最近1分鐘的執行數量。上次數據保存在last.cache。

  10、每秒鐘執行replace數

grep 'Com_replace' ${curFile} | grep -v 'select' | awk -F ' ' '{print $2}'

需要計算兩次的慢查詢次數得到差值除以時間差,等于最近1分鐘的執行數量。上次數據保存在last.cache。 

  11、每秒鐘執行的 Innodb_rows_deleted

grep 'Innodb_rows_deleted' ${curFile} | awk -F ' ' '{print $2}'

需要計算兩次的慢查詢次數得到差值除以時間差,等于最近1分鐘的執行數量。上次數據保存在last.cache。  

  12、每秒鐘執行的 Innodb_rows_inserted

grep 'Innodb_rows_inserted' ${curFile} | awk -F ' ' '{print $2}'

需要計算兩次的慢查詢次數得到差值除以時間差,等于最近1分鐘的執行數量。上次數據保存在last.cache。  

  13、每秒鐘執行的 Innodb_rows_read

grep 'Innodb_rows_read' ${curFile} | awk -F ' ' '{print $2}'

需要計算兩次的慢查詢次數得到差值除以時間差,等于最近1分鐘的執行數量。上次數據保存在last.cache。

  14、每秒鐘執行的 Innodb_rows_updated

grep 'Innodb_rows_updated' ${curFile} | awk -F ' ' '{print $2}'

需要計算兩次的慢查詢次數得到差值除以時間差,等于最近1分鐘的執行數量。上次數據保存在last.cache。

  15、每秒鐘執行的 innodb rows total

expr ${innodbRowsDeletedPS} + ${innodbRowsInsertedPS} + ${innodbRowsReadPS} + ${innodbRowsUpdatedPS}

等于前面四個Innodb_rows_*執行次數的總和

  16、每秒處理命令數 qps

expr ${mysqlSelectNumPS} + ${mysqlInsertNumPS} + ${mysqlUpdateNumPS} + ${mysqlDeleteNumPS} + ${mysqlReplaceNumPS}

等于前面五個mysql命令Com_*的數量總和

  17、每秒接收字節數 KByte/s

grep 'Bytes_received' ${curFile} | awk -F ' ' '{print $2}'

需要計算兩次的慢查詢次數得到差值除以時間差,等于最近1分鐘的執行數量,除以1024得到單位KByte/s。上次數據保存在last.cache。

  18、每秒發送字節數

grep 'Bytes_sent' ${curFile} | awk -F ' ' '{print $2}'

需要計算兩次的慢查詢次數得到差值除以時間差,等于最近1分鐘的執行數量,除以1024得到單位KByte/s。上次數據保存在last.cache。

  19、可立即獲得鎖的次數

grep 'Table_locks_immediate' ${curFile} | awk -F ' ' '{print $2}'

需要計算兩次的慢查詢次數得到差值,等于最近1分鐘的可立即獲得鎖數量。上次數據保存在last.cache。

  20、不可立即獲得鎖的次數

grep 'Table_locks_waited' ${curFile} | awk -F ' ' '{print $2}'

需要計算兩次的慢查詢次數得到差值,等于最近1分鐘的不可立即獲得鎖數量。上次數據保存在last.cache。

  21、一行鎖定需等待時間

grep 'Innodb_row_lock_waits' ${curFile} | awk -F ' ' '{print $2}'

需要計算兩次的慢查詢次數得到差值,等于最近1分鐘的一行鎖定需等待時間。上次數據保存在last.cache。

  22、 當前臟頁數

grep 'Innodb_buffer_pool_pages_dirty' ${curFile} | awk -F ' ' '{print $2}'

  23、要求清空的緩沖池頁數

grep 'Innodb_buffer_pool_pages_flushed' ${curFile} | awk -F ' ' '{print $2}'

需要計算兩次的慢查詢次數得到差值,等于最近1分鐘的要求清空的緩沖池頁數。上次數據保存在last.cache。

  24、Innodb 寫入日志字節數 KByte

grep 'Innodb_os_log_written' ${curFile} | awk -F ' ' '{print $2}'

需要計算兩次的慢查詢次數得到差值,等于最近1分鐘的寫入日志字節數,除以1024得到KByte。上次數據保存在last.cache。

  25、占用內存大小 MByte

pid=`ps aux | grep 'mysqld' | grep -Ev 'safe|grep' | awk '{print $2}' `
mem=`cat /proc/${pid}/status | grep 'VmRSS' | awk '{print $2}'`
mysqlMem=`echo "scale=2;${mem} / 1024" | bc`

除以1024得到MByte

  26、handler socket每秒處理數

curHsTableLock=`grep 'Hs_table_lock' ${curFile} | awk '{print $2}'`
preHsTableLock=`grep 'Hs_table_lock' ${preFile} | awk '{print $2}'`
if [ -n "${curHsTableLock}" ]
then
? ? hsQPS=`echo "scale=0;(${curHsTableLock} - ${preHsTableLock}) / ${intervalTime}" | bc`
else
? ? hsQPS=0
fi

  27、主從同步和狀態

#主從信息
#是否為從服務器
slave_running=`grep 'Slave_running' ${curFile} | awk '{print $2}'`
if [ "${slave_running}A" = "ONA" ]
then
? ? slaveRunning=1
? ? slaveStatus=`${MYSQL} -e'show slave status\G'`
? ? echo "${slaveStatus}" > ${slaveFile}
? ??
? ? slaveIoRunning=`grep 'Slave_IO_Running' ${slaveFile} | awk -F ':' '{print $2}'`
? ? slaveSqlRunning=`grep 'Slave_SQL_Running' ${slaveFile} | awk -F ':' '{print $2}'`

? ? if [ "${slaveIoRunning}A" == "NoA" -o "${slaveSqlRunning}A" == "NoA" ]
? ? then
? ? ? ? slaveRunning=3
? ? fi
? ??
? ? secondsBehindMaster=`grep 'Seconds_Behind_Master' ${slaveFile} | awk -F ':' '{print $2}'`
? ? if [ "${secondsBehindMaster}A" = "NULLA" ]
? ? then
? ? ? ? secondsBehindMaster=8888? # 表示主從不同步
? ? fi

? ? #是從庫時 獲取主庫ip
? ? master=`grep 'Master_Host' ${slaveFile} | awk -F ':' '{print $2}'`
? ? masterPort=`grep 'Master_Port' ${slaveFile} | awk -F ':' '{print $2}'`
else
? ? master=""
? ? masterPort=""
? ? slaveRunning=0
? ? secondsBehindMaster=10000? # 不用檢測
fi

注:Seconds_Behind_Master,該值作為判斷主從延時的指標,那么它又是怎么得到這個值的呢,同時,它為什么又受到很多人 的質疑?

Seconds_Behind_Master是通過比較sql_thread執行的event的timestamp和io_thread復制好的 event的timestamp(簡寫為ts)進行比較,而得到的這么一個差值。我們都知道的relay-log和主庫的bin-log里面的內容完全一樣,在記錄sql語句的同時會被記錄上當時的ts,所以比較參考的值來自于binlog,其實主從沒有必要與NTP進行同步,也就是說無需保證主從時鐘的 一致。你也會發現,其實比較真正是發生在io_thread與sql_thread之間,而io_thread才真正與主庫有關聯,于是,問題就出來了, 當主庫I/O負載很大或是網絡阻塞,io_thread不能及時復制binlog(沒有中斷,也在復制),而sql_thread一直都能跟上 io_thread的腳本,這時Seconds_Behind_Master的值是0,也就是我們認為的無延時,但是,實際上不是,你懂得。這也就是為什 么大家要批判用這個參數來監控數據庫是否發生延時不準的原因,但是這個值并不是總是不準,如果當io_thread與master網絡很好的情況下,那么 該值也是很有價值的。

之前,提到 Seconds_Behind_Master這個參數會有負值出現,我們已經知道該值是io_thread的最近跟新的ts與sql_thread執行到 的ts差值,前者始終是大于后者的,唯一的肯能就是某個event的ts發生了錯誤,比之前的小了,那么當這種情況發生時,負值出現就成為可能。

  28、檢測采集Agent心跳情況

轉載于:https://www.cnblogs.com/cyt1153/p/6608069.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/284160.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/284160.shtml
英文地址,請注明出處:http://en.pswp.cn/news/284160.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

2005年AMC8數學競賽中英文真題典型考題、考點分析和答案解析

今天距離2024年的AMC8美國數學競賽舉辦已不足一個月了,趕緊利用周末的時間刷刷真題,查漏補缺吧!如果您有任何關于AMC8比賽的任何問題都可以問我,關于題目的解析也可以交流。 今天我們來看看2005年AMC8競賽的五道典型考題。歡迎您查…

WPF效果第一百九十三篇之登錄實現

前面一直在玩耍ListBox(最愛),大周末的就適合在家吹著風扇擼著代碼;今天來分享一個很簡單實用的登錄,來看看最終實現的效果:1、關于軟件啟動后焦點實現:<Style TargetType"Border"><Style.Triggers><DataTrigger Binding"{Binding IsEmptyAccoun…

IDEA中安裝并使用JRebel熱部署插件

文章目錄 作者簡介引言導航熱門專欄推薦概述安裝JRebel注冊JRebel配置JRebel最后小結導航熱門專欄推薦作者簡介 作者名&#xff1a;編程界明世隱 簡介&#xff1a;CSDN博客專家&#xff0c;從事軟件開發多年&#xff0c;精通Java、JavaScript&#xff0c;博主也是從零開始一步步…

UWP: 實現 UWP 應用自啟動

原文:UWP: 實現 UWP 應用自啟動在上一篇文章中&#xff0c;我們實現了使用命令行來啟動 UWP 應用&#xff0c;在這一篇文章中&#xff0c;我們會實現 UWP 應用自啟用的實現&#xff0c;也即開機后或用戶登陸后&#xff0c;應用自己啟動。這些特性原來都是 Win32 程序所具備的&a…

選擇 GCD 還是 NSTimer ?

我們常常會延遲某件任務的執行&#xff0c;或者讓某件任務周期性的執行。然后也會在某些時候需要取消掉之前延遲執行的任務。 延遲操作的方案一般有三種&#xff1a; 1.NSObject的方法&#xff1a; 2.使用NSTimer的方法&#xff1a; 3.使用GCD的方法&#xff1a; 一般情況下&am…

完美解決Idea unable to access git 錯誤

在命令行執行 如下命令即可 git config --global --unset http.proxy git config --global --unset https.proxy

Web框架 性能評測 -- C# 的性能 和 Rust、C++并駕齊驅

自從2021年2月第20輪公布的測試以后&#xff0c;一年半后 的2022年7月19日 發布了 TechEmpower 21輪測試報告&#xff1a;Round 21 results - TechEmpower Framework Benchmarks。Techempower benchmark是包含范圍最廣泛的web框架性能測試&#xff0c;覆蓋了比較典型的使用場景…

CF449 C. Jzzhu and Apples

1 /*2 http://codeforces.com/problemset/problem/449/C3 cf 449 C. Jzzhu and Apples4 數論素數貪心5 */6 #include <cstdio>7 #include <algorithm>8 using namespace std;9 const int Nmax100005; 10 int is_prime[Nmax]; 11 int book[Nmax]; 12 int cnt[Nmax];…

【GlobalMapper精品教程】027:路徑剖面和和視線工具的使用

文章目錄 一、路徑剖面簡介二、創建剖面圖1. 加載DEM2. 創建剖面圖3. 計算填挖方3. 保存剖面圖一、路徑剖面簡介 路徑剖面視線工具允許您使用加載的高程數據集沿用戶指定的路徑獲取垂直剖面。 要定義生成3D路徑剖面所遵循的路徑,只需單擊鼠標左鍵選擇路徑的點,然后石鍵單擊…

QT中VideoProbe的簡介和實現

一、遇到問題在Android機上使用QT進行圖像處理程序設計的時候&#xff0c;遇到的一個比較明顯的問題就是圖片采集的問題----攝像頭獲得是實時的視頻&#xff0c;如果我們想從中動態地截獲圖片&#xff0c;并且轉換成Mat的格式&#xff0c;那么僅僅是靜態的imagecapturee就無法完…

bzoj2751[HAOI2012]容易題(easy)

bzoj2751[HAOI2012]容易題(easy) 題意&#xff1a; 已知一個數列A對于所有的A[i]都是1~n的自然數&#xff0c;一些A[i]不能取一些值&#xff0c;求出所有可能的數列的積的和 mod 1000000007的值。 題解&#xff1a; 題目中的n≤109實際上是109……首先推個方程s[l,r]s[l,k]*s[k…

WinForm(二):WinFrom中Main函數的入參和出參

基本上有獨立進程的應用&#xff0c;都是以Main函數作為入口&#xff0c;開始運行的。在C#中&#xff0c;Main函數可以無參無返回值&#xff0c;當然也可以是有string[]參數和int返返回值的。WinFrom也滿足這個規則。那么Main作為一個進程的開始函數&#xff0c;那么是誰傳這些…

linux內存回收機制

無論計算機上有多少內存都是不夠的&#xff0c;因而linux kernel需要回收一些很少使用的內存頁面來保證系統持續有內存使用。頁面回收的方式有頁回寫、頁交換和頁丟棄三種方式&#xff1a;如果一個很少使用的頁的后備存儲器是一個塊設備&#xff08;例如文件映射&#xff09;&a…

編譯源碼 JAVA out of memory

轉載于:https://www.cnblogs.com/dyufei/p/6612032.html

安卓 Input Events(輸入事件)

在安卓中&#xff0c;有不止一種方法從你的應用截取用戶交互事件。在你的用戶界面中考慮事件&#xff0c;途徑就是從用戶界面中的一個指定的view對象中捕獲事件。該view提供了這樣做的方法。 在你用來組成你布局的不同的view類中&#xff0c;你或許注意到了一些公共的回調方法似…

【GlobalMapper精品教程】029:柵格重分類案例詳解

重分類就是對原有柵格像元值重新分類從而得到一組新值并輸出。重分類工具有多種方法將像元值重新分類或更改為替代值,Globalmapper提供了柵格重分類的功能。 文章目錄 一、柵格重分類簡介二、柵格重分類案例【參考閱讀】:ArcGIS實驗教程——實驗四十三:ArcGIS柵格重分類(Re…

Mybatis 和 JPA 用哪個好? 優缺點 ?

本文不會下關于 Mybatis 和 JPA 兩個持久層框架哪個更好這樣的結論。只是擺事實&#xff0c;講道理&#xff0c;所以&#xff0c;請各位看官勿噴。 一、事件起因 關于 Mybatis 和 JPA 孰優孰劣的問題&#xff0c;爭論已經很多年了。一直也沒有結論&#xff0c;畢竟每個人的喜…

SkiaSharp 之 WPF 自繪 五環彈動球(案例版)

此案例基于拖曳和彈動球兩個技術功能實現&#xff0c;如有不懂的可以參考之前的相關文章&#xff0c;屬于遞進式教程。五環彈動球好吧&#xff0c;名字是我起的&#xff0c;其實&#xff0c;你可以任意個球進行聯動彈動&#xff0c;效果還是很不錯的&#xff0c;有很多前端都是…

【GlobalMapper精品教程】032:瀏覽地理照片及航線信息(航測應用)

本文講述globalmapper軟件在無人機航測了內業處理中的應用之:瀏覽地理照片及航線信息、相機參數、元數據編輯器。 文章目錄 1. 航線信息瀏覽2. 地理圖像瀏覽2.1 數字化工具2.2 要素信息工具2.3 屬性表3. 照片原數據編輯1. 航線信息瀏覽 打開globalmapper軟件,加載無人機航測…