使用pt stalk診斷MySQL問題

2022-04-08 19:40:02 字數 2529 閱讀 2301

在mysql伺服器出現短暫(5~30秒)的效能波動的時候,一般的效能監控工具都很難抓住故障現場,也就很難收集對應較細粒度的診斷資訊。另外,如果這種波動出現的頻率很低,例如幾天才一次,我們也很難人為的抓住現場,收集資料。這正是pt-stalk所解決的問題。

pt-stalk是percona-toolkit的一部分(其前身是aspersa的一部分)。安裝percona-toolkit後,可以通過man pt-stalk了解如何使用該工具,本文的介紹是man pt-stalk的乙個子集,強烈建議直接閱讀man pt-stalk。額外的,本文將提供pt-stalk示例命令可供參考。

1. 使用pt-stalk

pt-stalk –collect-tcpdump –function status \ –variable threads_connected –threshold 2500 \ –daemonize — –user=root –password=yourpassword

上面的命令表示,讓pt-stalk後台執行(–daemonize),並監視show global status中的threads_connected狀態值,如果該值超過2500,則觸發收集主機和mysql的效能、狀態資訊。pt-stalk會每隔一秒檢查一次狀態值,如果連續5次滿足觸發條件,則開始收集。

–collect-tcpdump表示除了收集基本資訊外,還將額外使用tcpdump收集當時的網路包,類似的還可以使用–collect-gdb等。

2. pt-stalk如何連線mysql

在上面的命令中引數,」– –user=root –password=yourpassword」表示,將使用」–」後面的所有引數用於mysql和mysqladmin命令,所以這裡確保你給出正確的使用者名稱和密碼。下面是man pt-stalk中給出的語法:

synopsis usage: pt-stalk [options] [-- mysql options]

看到前面的[options]是pt-stalk使用的引數,[-- mysql options]是mysql和mysqladmin使用的引數。

3. pt-stalk的工作狀態

pt-stalk是乙個後台程式,預設我們可以通過檔案/var/log/pt-stalk.log,檢視pt-stalk的執行狀態:

tail -f /var/log/pt-stalk.log 2012_06_05_00_00_35 check results: threads_connected=1641, matched=no 2012_06_05_00_00_36 check results: threads_connected=1641, matched=no 2012_06_05_00_00_37 check results: threads_connected=1641, matched=no 2012_06_05_00_00_38 check results: threads_connected=1641, matched=no 2012_06_05_00_00_39 check results: threads_connected=1641, matched=no 2012_06_05_00_00_40 check results: threads_connected=1641, matched=no 2012_06_05_00_00_41 check results: threads_connected=1641, matched=no

你還可以通過引數–log指定乙個你希望的log目錄和檔案。

4. pt-stalk收集的效能和狀態資料

預設pt-stalk將收集的資料放在目錄/var/lib/pt-stalk下,你可以使用引數–dest指定你希望的目錄。下面是乙個pt-stalk觸發收集後的資料檔案:

這些資料都是原始資料,我們可以根據這些來分析當時mysql或者主機是否有異常。

5. pt-stalk的觸發條件

在上面的示例中觸發引數是:」–function status –variable threads_connected –threshold 2500″,表示mysql狀態值threads_connected超過2500時觸發資料收集。常用的觸發條件還可以使用threads_running等。

另外還可以使用show processlist的中的結果觸發,例如」–function processlist –variable state –match statistics –threshold 10″表示,show processlist中state列的值為statistics的執行緒數超過10則觸發收集。

6. 一些其他有用的引數

–iterations:該引數指定pt-stalk在收集幾次故障現場後就退出。預設pt-stalk會一直執行

–run-time:觸發收集後,該引數指定收集多長時間的資料。預設是30秒

–sleep:為防止一直觸發收集資料,該引數指定在某次觸發後,必須sleep一段時候才繼續觀察並觸發收集。預設是300秒

–interval:預設情況pt-stalk會每隔一秒檢查一次狀態資料,判斷是否需要觸發收集。該引數指定間隔時間,預設是1秒。

–cycles:預設情況pt-stalk只有連續觀察到五次狀態值滿足觸發條件時,才觸發收集。該引數控制,需要連續幾次滿足條件,收集被觸發,預設是5次。

python使用peewee實現mysql資料操作

peewee可用class來建立表,增刪改查,應該是相對餘單錶 本人幾乎沒用過,自以為如此 想實現sql查詢,得到list,比如這樣的結果 但是查詢結果是全是資料 元組 且找不到列名,後dir後逐個嘗試發現列名可以使用result.description j 0 獲取 元組使用起來不方便,現實現將資...

Zeppelin使用JDBC連線MySQL

在interpreter列表頁create new interpreter。輸入名稱 mysql interpreter group 選擇jdbc properties 修改 name value default.driver com.mysql.jdbc.driver default.url jd...

contos 使用docker安裝mysql

安裝docker yum install docker檢視docker是否安裝成功 docker v 檢視docker版本啟動docker 兩種啟動方式 systemctl start docker 正常啟動 systemctl enable docker 開機啟動常用命令 docker image...