mysql report 使用 轉帖

來源:互聯網
上載者:User
mysqlreport 詳解2010-05-16 23:16

進行MySQL的配置最佳化,首先必須找出MySQL的效能瓶頸所在;而SHOW STATUS輸出的報告正是用來計算效能瓶頸的參考資料。mysqlreport不像SHOW STATUS那樣簡單的羅列資料,而是對這些參考資料加以融合計算,整理成一個個最佳化參考點,然後DBA就可以根據這個最佳化參考點的值以及該點的衡量標準,進行對應調整。這篇文章既不分析mysqlreport的報告含義,也不說明最佳化參考點的計算公式和原理,只簡單描述使用方法。後面再逐次深入分析。

mysqlreport首頁和
web site:http://hackmysql.com/mysqlreport
download:http://hackmysql.com/scripts/mysqlreport-3.5.tgz

mysqlreport的安裝極為簡單,下載上述文檔後,使用tar -xvf mysqlreport-3.5.tar解壓後,在目前的目錄組建檔案夾mysqlreport-3.5,該檔案夾下的mysqlreport即是可執行程式。
注意:mysqlreport為perl指令碼,用到DBI以及DBD::mysql,須正確安裝後才能正常使用!

mysqlreport命令列選項參數

linux-8tpn:/home/kevin/perl # perl mysqlreport  --help mysqlreport v3.5 Apr 16 2008 mysqlreport makes an easy-to-read report of important MySQL status values.  Command line options (abbreviations work):    --user USER       Connect to MySQL as USER    --password PASS   Use PASS or prompt for MySQL user's password    --host ADDRESS    Connect to MySQL at ADDRESS    --port PORT       Connect to MySQL at PORT    --socket SOCKET   Connect to MySQL at SOCKET    --no-mycnf        Don't read ~/.my.cnf    --infile FILE     Read status values from FILE instead of MySQL    --outfile FILE    Write report to FILE    --email ADDRESS   Email report to ADDRESS (doesn't work on Windows)    --flush-status    Issue FLUSH STATUS; after getting current values    --relative X      Generate relative reports. If X is an integer,                      reports are live from the MySQL server X seconds apart.                      If X is a list of infiles (file1 file2 etc.),                      reports are generated from the infiles in the order                      that they are given.    --report-count N  Collect N number of live relative reports (default 1)    --detach          Fork and detach from terminal (run in background)    --help            Prints this    --debug           Print debugging information  Visit http://hackmysql.com/mysqlreport for more information.
選項 解釋
- -user 串連MySQL的使用者名稱
- -password 串連MySQL的使用者密碼。命令列上出現該選項但沒有給出參數時,mysqlreport將在使用者斷行符號後提示輸入密碼
- -host MySQL伺服器位址
- -port MySQL伺服器的開發連接埠
- -socket 本地MySQL UNIX域套介面路徑
- -no-mycnf 該選項指引mysqlreport不要讀取 ~/.my.cnf,預設情況下會去讀取這個檔案。- -user 和 - -password 總是覆蓋從 ~/.my.cnf 中取得的參數
- -infile 從status檔案讀取資料,代替從伺服器上讀取
- -outfile 列印報告後,將報告同時寫入該選項指定的檔案中。mysqlreport 的內部機制總是先將報告寫入臨時檔案中,然後將該臨時檔案裡的內容列印到螢幕上。如果指定了- -outfile選項,則將臨時檔案拷貝成 指定的檔案。如果指定了選項- -email,則會刪除臨時檔案
- -email 列印報告後,將結果發送到指定的郵箱。該選項需要使用/usr/sbin/目錄下的sendmail程式,因此無法在windows 平台下使用。/usr/sbin/sendmail可以符號連結到 qmail,或者任何其他能類比sendmail -t方式的MTA程式。郵件來源是:mysqlreport,主題是:MySQL status report on HOST,HOST是mysqlreport所在的主機名稱,可能是讀取到的- -host值,預設是localhost
- -flush-status 列印報告後,運行FLUSH STATUS命令
- -relative mysqlreport通常產生從MySQL啟動以來的狀態報表。指定- -relative選項可產生相對於前次報告以來的相關報告。

 

如果選項參數是一個整數,程式每隔指定的秒數後再次產生一份狀態報表,報告次數由- -report-count選項指定。預設產生1份相關報告。例如,指定- -relative的值為60,則會產生2份報告:第一份基本報告馬上產生,第二份相關報告在60秒後產生。第二份報告中的數值和前面的那份相關。例如,前者總共有10.00k次查詢,在這60秒的間隔時間裡接受了新的1.00k次查詢,則後者的總查詢次數是1.00k而非11.00k次。

如果選項參數是本地檔案清單(就像- -infile選項那樣),程式會按照參數中檔案的順序來依次產生狀態報表。檔案清單中的檔案應該以空格分隔。以檔案產生時間依次排列檔案就顯得很重要,較早產生的檔案應該放在列表的前面。第一個檔案中必須有系統變數,例如:key_buffer_size、table_cache 等。每個檔案中可以有多組”SHOW STATUS”的結果。注意:通過 “mysqladmin -r -i N extended” 產生的狀態檔案無法使用,因為 mysqladmin的-r參數已經令其產生了具有相對性的狀態值了。

由於mysqlreport首先會把狀態報表寫到臨時檔案中,如果- -relative的參數是整數時,mysqlreport會顯示它把檔案寫到哪了。那麼就可以直接通過查看這些檔案內容來觀察伺服器的狀況

- -report-count 產生N份相關的報告。本選項只有在同時啟用- -relative選項後才有效。mysqlreport會自動產生N+1份報告:第一份基本報告,以及後面的N份相關報告
- -detach 本選項使得mysqlreport派生新進程,從終端上脫離轉入後台繼續運行。派生新進程後,mysqlreport 會報告它把結果寫入了哪個臨時檔案。本選項需要- -outfile或- -email中的一個,如果這兩個選項都沒有給出,則產生的臨時檔案就會被刪除,因為自派生出新進程後,無法再將結果列印到終端螢幕上了。本選項如果和- -relative選項一起使用的話就更有意義了,這樣mysqlreport就能定時報告資訊,而無需人工幹預獲得報告。例如使用如下命令,就能讓mysqlrepot隔一個小時再次產生一次報告,並將結果發送到指定的信箱:perl mysqlreport - -relative=3600 - -detach - -email=host@domain.com。一個小時候後,mysqlreport通過email發送報告,刪除臨時檔案,並且乾淨地終止
- -help 列印協助資訊
- -debug 列印調試資訊

使用mysqlreport的簡單例子
1.串連遠端資料庫192.168.12.14
perl mysqlreport - -host=192.168.12.14 - -user=db_user - -password=db_user_password

2.通過本地UNIX域套介面檔案/data/mysql_data/mysql.sock串連本機資料庫
perl mysqlreport - -user=root - -password=root_password - -socket=/data/mysql_data/mysql.sock

3.將輸出報告寫入檔案/data/mysql_data/report/mysqlreport.txt
perl mysqlreport - -user=root - -password=root_password - -socket=/data/mysql_data/mysql.sock - -outfile=/data/mysql_data/report/mysqlreport.txt

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.