MySQL 的實時性能監控利器

操作系統及MySQL數據庫的實時性能狀態數據尤為重要,特別是在有性能抖動的時候,這些實時的性能數據可以快速幫助你定位系統或MySQL數據庫的性能瓶頸,就像你在Linux系統上使用「top,sar,iostat」等命令工具一樣,可以立刻定位OS的性能瓶頸是在IO還是CPU上,所以收集/展示這些性能數據就更為重要,那都有哪些重要的實時性能狀態指標可以反應出系統和MySQL數據庫的性能負載呢?

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

目前在Linux跑MySQL是大多數互聯網公司的標配,以上圖片的性能數據指標項是我認為在Linux,MySQL,InnoDB中較為重要的實時狀態數據,然而在以上圖片Doing一欄其實更為重要,之所以把它叫做Doing,是因為「processlist,engine innodb status,locks」等指標項才真正反映了MySQL此時正在做什么。

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

我們來對標Oracle數據庫看一下,在Oracle數據庫中提供了「AWR,ASH,SQL Monitor」等眾多診斷工具,可以一眼望穿數據庫正在做什么,甚至都可以知道在過去30天內任何一個時間區間的性能負載和當時數據庫正在做什么。

在MySQL中雖然有像「zabbix,PMM」等優秀的監控工具,但它們只能反映數據庫歷史的一些性能數據曲線,例如,TPS高了,臨時表使用多了,有InnoDB Deadlocks,但對于MySQL當時的Doing,我只能說不夠直接。如果你在現場,你可以抓到MySQL正在做什么,但是,你總有不在現場的時候,如果問你昨天晚上數據庫的性能抖動是什么原因?怎樣快速重現現場找到引起抖動的原因呢?

答案是可以使用「doDBA tools」,這是一款免費的基于控制臺監控工具。

doDBA tools是什么

doDBA tools是一個基于控制臺的遠程監控工具,它不需要在本地/遠程系統上安裝任何軟件,它可以實時收集操作系統、MySQL、InnoDB的實時性能狀態數據,并可以生成Doing日志文件,來幫助你快速了解/優化系統及MySQL數據庫。

特點

  • 基于golang語言開發

  • 可收集Linux、MySQL相關性能數據

  • 可本地或遠程收集,可多臺

  • mytop?--Like Linux TOP

  • 基于并發生成Doing日志,復現現場

  • 可記錄到日志文件

doDBA tools 工作原理


遠程收集系統信息是通過ssh(用戶名密碼或建立信任)的方式連接到遠程服務器上收集,收集的方法都是通過讀取Linux的proc下的等meminfo,diskstats,uptime,net,vmstat ,cpuinfo ,loadavg等文件,這和pmm,zabbix收集方式一致。


遠程收集MySQL信息是通過 MySQL tcp連接到MySQL數據庫上收集,只需要授予連接用戶PROCESS、SELECT權限即可。


系統信息和MySQL信息的收集可以分離,如果只想收集系統信息,只需要提供系統用戶名密碼即可,如果只收集MySQL可以只提供MySQL連接信息,如果是rds用戶,可以使用-rds參數,在使用mytop時會自動忽略系統信息的收集。

如何使用

Github主頁:
https://github.com/dblucyne/dodba_tools
Download:
wget https://raw.githubusercontent.com/dblucyne/dodba_tools/master/doDBA --no-check-certificate
wget https://raw.githubusercontent.com/dblucyne/dodba_tools/master/doDBA.conf --no-check-certificate
chmod +x doDBA
下載下來就可以直接使用,不依賴于任何環境。
使用幫助:
./doDBA -help-c stringconfiguration file.(default "doDBA.conf")-h stringConnect to host/IP.-sysPrint linux info.-myallPrint linux and mysql info.-mysqlPrint mysql info.-innodbPrint innodb info.-mytopPrint mysql prcesslist,like top.-i durationrefresh interval in seconds.(1s)-t intdoing on Threads_running.(50) ?
-rds ? ? ? ?
Ignore system info.
-logPrint to file by day.-nocolorPrint to nocolor.

使用實例

1. 收集Linux性能數據
./doDBA -h=10.1.x.xx -sys

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

2. 收集MySQL性能數據

./doDBA -h=10.1.x.xx -mysql

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

3. 收集InnoDB性能數據
./doDBA -h=10.1.x.xx -innodb

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

4. 收集MySQL及Linux性能數據
./doDBA -h=10.1.x.xx -myall

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

5. mytop --like linux top
./doDBA -h=10.1.x.xx -mytop

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

6. 借助Shell收集多臺
cat ip.txt
10.1.x.x1
10.1.x.x2
Shell
cat ip.txt | while read ip; do echo $ip;./doDBA -h=$ip -mysql -log </dev/null & done
7. 收集到日志文件
./doDBA -h=10.1.x.xx -mysql -log

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

8. 開啟Doing功能

使用【-t】參數可以基于Threads_running的數量設置閾值,設置后可記錄「processlist,engine innodb status」信息到dodba.log日志中,--復現現場。

./doDBA -h=10.1.x.xx -myall -t=3

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

9. 查看Doing日志
tail -f dodba.log

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=





如果你對golang感興趣,如果你對doDBA tools有問題或者建議,掃描二維碼,可聯系作者。?


640?wx_fmt=jpeg&tp=webp&wxfrom=5&wx_lazy


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

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

相關文章

設置linearlayout最大高度_技術案例 | 排煙口個數與擋煙垂壁高度的關系探討

隨著《建筑防煙排煙系統技術標準》( 以下簡稱新規范) 的正式實施&#xff0c;新規范對排煙系統的設計提出了完全不同的設計理念。根據新規范正文: 當建筑空間凈高不大于6m時&#xff0c;每個防煙分區的排煙量應按不小于60m/(h㎡)計算且不小于15,000m/h( 走道不小于13,000m/h) &…

python安裝requests第三方模塊

2018-08-28 22:04:51 1 .下載到桌面后解壓&#xff0c;放到python的目錄下 --------------------------------------------------------------------------------------------------------------------------------------------------------- 2 . 在CMD輸入以下 F:\>cd /d F…

mysql整站源碼安裝_MySQL入門01-MySQL源碼安裝

操作系統&#xff1a;CentOS 6.7MySQL版本&#xff1a;5.6.301.前期準備首先需要CMake&#xff0c;可以yum直接安裝&#xff1a;yum install cmake也可以官網 https://cmake.org/ 下載源碼編譯。我這里選擇了官網下載最新版本cmake-3.5.2.tar.gz。# tar -zxvf cmake-3.5.2.tar.…

集算器協助Java處理結構化文本之條件過濾

直接用Java實現文本文件中數據按條件過濾會有如下的麻煩: 1、文件不是數據庫&#xff0c;不能用SQL訪問。當過濾條件變化時需要改寫代碼。如果要實現象SQL那樣靈活的條件過濾&#xff0c;則需要自己實現動態表達式解析和求值&#xff0c;編程工作量非常大。 2、文件太大時不能一…

python3動態加載模塊的方法實現

2019獨角獸企業重金招聘Python工程師標準>>> 需求 我們有時寫了一個功能&#xff0c;需要不斷地調整&#xff0c;但是已經在線上了&#xff0c;而且在執行任務&#xff0c; 這時要更新上去源文件&#xff0c;而不能結束掉當前進程,怎么辦&#xff1f; 所以這時&…

python 浮點數最小值_PYTHON學習筆記(3)——基本數據類型

本次學習原內容均來自MOOC國家精品課程《Python程序語言設計》嵩天第一篇在問題——“今天python了嗎&#xff1f;”中基本數據類型1、 整數&#xff08;1&#xff09;整數無限制 pow(x,y) 計算 &#xff08;2&#xff09;四種進制 2、 浮點數類型&#xff08;1&#xff09;取整…

2018.08.29 NOIP模擬 pmatrix(線性篩)

【問題描述】 根據哥德巴赫猜想&#xff08;每個不小于 6 的偶數都可以表示為兩個奇素數之和&#xff09;&#xff0c;定義 哥德巴赫矩陣 A 如下&#xff1a;對于正整數對(i,j)&#xff0c;若 ij 為偶數且 i,j 均為奇素數&#xff0c;則 Ai,j 1&#xff0c; 否則 Ai,j 0。現…

Windows Azure移動終端云服務管理(公測版)

概覽 云在遠方&#xff0c;管理在您手中。在這個移動為先 云為先的世界&#xff0c;服務不再是基于請求才提供&#xff0c;而是主動來到身邊方便您的模式了。我們最近將會陸續推出幾大移動端利器幫助您隨時隨地管理您的云服務。 首批利器之中排名第一當屬Azure云助手應用, 它是…

學習opencv3中文版_給視覺組新生的一點學習建議

如果說機械組是把機器人做出來電控組讓機器人動起來那么視覺組就是讓機器人智能化完成一個合格的機器人三者缺一不可今天就讓我們來看看視覺組師兄推薦的學習建議吧&#xff01;1語言基礎 野狼隊視覺組目前使用的主要語言是C&#xff0c;同時也需要具備一定的C語言基礎。建議…

如何動態改變audio的播放的src

如何動態改變audio的播放的src 一、總結 一句話總結&#xff1a;js方式在請求外部網站的時候行&#xff0c;php方式在請求內外部資源都行。因為php走在js前面&#xff0c;所以問題可以從php方面想辦法。 1、如何使用js控制修改audio的src或它的source 的src屬性實現動態改變aud…

錯誤 open too many files

錯誤:服務器最大打開文件數65535啟動java程序報錯 open too many files解決辦法&#xff1a;1.增加文件描述符 #服務器本來就是65535了2.排查程序 #研發總監4.研發總監和我 一起看服務器lsof -p pid&#xff08;程序&#xff09;|wc -l5.最終確定程序的問題6.研發總監 去改…

mysql 水平拆分實例_2021先定個小目標?搞清楚MyCat分片的兩種拆分方法和分片規則!(二):水平拆分實例解析和代碼實現!...

一、概述根據表中的數據的邏輯關系&#xff0c;將同一個表中的數據按照某種條件拆分到多臺數據庫(主機)上面&#xff0c;這種切分稱之為數據的水平(橫向)切分。二、案例場景在業務系統中, 有一張表(日志表), 業務系統每天都會產生大量的日志數據 , 單臺服務器的數據存儲及處理能…

30分鐘快速搭建移動應用直傳OSS服務

30分鐘快速搭建移動應用直傳服務 背景 這是一個移動互聯的時代。手機APP上傳的數據會越來越多。把數據存儲的問題交給OSS&#xff0c; 讓開發者能更加專注于自己的應用邏輯。 那么怎么樣基于OSS構建一個APP存儲系統呢&#xff1f; 目的 本教程就是讓你在30分鐘內搭建一個基于OS…

用java判斷一個年份是否為閏年_判斷閏年還是平年

↑↑↑點擊上方圖片&#xff0c;了解詳情正文&#xff1a;判斷一個年份是閏年還是平年。閏年條件&#xff1a;1.可以被400整除。2.可以被4整除&#xff0c;但是不可以被100整除。代碼&#xff1a;Private Sub 查詢_Click() If Me.年份 Mod 4 0 And Me.年份 Mod 100 <> 0…

PAT L1-048 矩陣A乘以B

https://pintia.cn/problem-sets/994805046380707840/problems/994805082313310208 給定兩個矩陣A和B&#xff0c;要求你計算它們的乘積矩陣AB。需要注意的是&#xff0c;只有規模匹配的矩陣才可以相乘。即若A有R?a??行、C?a??列&#xff0c;B有R?b??行、C?b??列&a…

【JavaScript吉光片羽】--- 滑動條

燈光的亮度控制需要一個滑動條&#xff0c;先借用lamp源碼中Bar&#xff1a; var Bar function (opt) {var defaults {$id: "", // 進度條dom節點idmin: 1, // 刻度最小值stepCount: 5, // 刻度步數step: 1, // 刻度步長$alpha: "",//顯示亮度的idtouchE…

ldd /usr/bin/mysql_mysql客戶端登錄時報mysql: relocation error錯誤

在安裝了xtrabackup后&#xff0c;再用下列命令登錄時報下列錯誤[rootlocalhost ~]# mysql -u root -pmysql: relocation error: mysql: symbol strmov, version libmysqlclient_16 not defined in file libmysqlclient.so.16 with link time reference解決方法&#xff1a;查看…

python語言用什么關鍵字來聲明一個類_python使用什么關鍵字定義類

什么是類&#xff1f; 用來描述具有相同的屬性和方法的對象的集合。它定義了該集合中每個對象所共有的屬性和方法。對象是類的實例。 什么是方法&#xff1f; 類中的函數即為方法 如何定義一個類&#xff1f; 定義類&#xff0c;語法格式如下&#xff1a;class ClassName:. . .…

谷歌+安卓,他已經改變了世界兩次,但還想多來幾次

回望拉里佩奇的創業經歷&#xff0c;小巴發現他在幾個創業者最有可能犯&#xff08;si&#xff09;錯&#xff08;bi&#xff09;的節點上都處理得很好。 你還記得你用的第一個搜索網站是什么嗎&#xff1f; Google.com 講到它的創始人&#xff0c;一般要連起來念&#xff0c; …

centos7 DNS服務器搭建

DNS&#xff0c;全稱Domain Name System&#xff0c;即域名解析系統。 DNS幫助用戶在互聯網上尋找路徑。在互聯網上的每一個計算機都擁有一個唯一的地址&#xff0c;稱作“IP地址”&#xff08;即互聯網協議地址&#xff09;。由于IP地址&#xff08;為一串數字&#xff09;不方…