本文檔描述了 mysqlreport 的所有命令行選項,大部分是用于控制如何顯示結果的。本文并沒有解釋這些推斷值是怎么計算得到的,可以點擊 理解mysqlreport 查看具體的計算方法。
注意
命令行選項的格式是 --選項,不過 -選項 的格式也可以。所有的選項都有其縮寫,只要是唯一的。例如,選項 --host 可以縮寫成 --ho,不過不能寫成 --h,因為 --h 有歧義,可能是 --host 或者 --help。
選項列表
--user USER
--password
--host ADDRESS
--port PORT
--socket SOCKET
--no-mycnf
--help 這些選項是模擬其他標準應用程序的。從 2.3 版本開始,--password 可以在后面加上參數,如 "--password FOO"。如果命令行中只指定了選項 --password,則會提示輸入密碼。--no-mycnf 告訴 mysqlreport 不要讀取 ~/.my.cnf,默認會去讀取這個文件。--user 和 --password 總是覆蓋從 ~/.my.cnf 中取得的結果。
--infile FILE 直接從文件中讀取狀態文件,而不是從MySQL的 SHOW STATUS 中讀取。文件內容通常是從 SHOW STATUS 的結果中取得,并且包含格式化字符(|, +, -)。mysqlreport 認為這樣的文件"狀態名 數值"格式的,狀態包含字符和下劃線(A-Z 和 _),數值則是非負整數。在狀態名和數值之間的任何內容都會被忽略。mysqlreport 也需要以下MySQL服務器系統變量:version, table_cache, max_connections, key_buffer_size, query_cache_size, thread_cache_size。INFILE 的格式也可以是 "名字 = 數值"這樣的,名字可以使是上面提到的各種變量名,數值是非負整數,可能后面帶有M或者其他單位(根據版本不同而定)。例如,想要指定 18M 的 key_buffer_size:key_buffer_size = 18M。或者,256 個 table_cache:table_cache = 256。M 指兆字節,而非百萬。因此 18M 是 18,874,368,而非 18,000,000。如果這些服務器變量沒有指定,則使用默認以下默認值:0.0.0, 64, 100, 8M, 0, 0,就可能會讓報告結果看起來很奇怪。
注意:MySQL 服務器版本在 5.1.3 或更新時,盡管系統變量 table_cache 改成了 table_open_cache,但是讀取本地文件時仍采用 table_cache。
--outfile FILE 在屏幕顯示完報告結果后,將結果寫入文件中。mysqlreport 的內部機制總是先將結果寫入臨時文件中。然后將該臨時文件里的內容打印到屏幕上。然后,如果指定了 --outfile 選項,則將臨時文件拷貝成 OUTFILE。如果指定選項 --email,則會刪除臨時文件。
--email ADDRESS 在屏幕顯示完結果后,將結果發送到郵件地址 ADDRESS 中去。欲該選項,需要在 /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;" 語句。如果沒有權限,則 DBD::mysql 會顯示返回值。
--relative (-r) X mysqlreport 通常情況下報告的是自從 MySQL 服務器啟動以來的狀態信息。--relative 選項則是令 mysqlreport 產生一份自從上次報告以來的相關報告。
如果 --relative X 的 X 值是一個整數,則 mysqlreport 會在隔 X 秒后再次產生一份 MySQL 服務器的狀態報告。產生報告的次數是由 --report-count 選項來控制的。默認是產生 1 份相關的報告。例如,指定 --relative 的值為 60,則會產生 2 份報告:第一份會馬上生成,第二份會在 60 秒后再次生成。第二份報告中的數值會和前面的那份相關。例如,前面那份中總共有 10.00k 次查詢,在這 60 秒的間隔時間里接受了新的 1.00k 次查詢,則第二份的報告中的總查詢次數是 1.00k 而非 11.00k 次。
如果 --relative 選項的值也可以是本地文件(類似 --infile 選項的用法),那么 mysqlreport 會按照參數值中文件的順序來依次產生狀態報告。因此,根據這些文件產生的時間來指定選項的值非常重要:較早產生的文件放在參數的前面。第一個文件中必須有手工添加的系統變量,例如:key_buffer_size、table_cache 等。每個文件中可以有多組 "SHOW STATUS" 的結果。注意:通過 "mysqladmin -r -i N extended" 產生的狀態文件無法使用,因為 mysqladmin 的 -r 參數已經令其產生了具有相對性的狀態值了。
由于 mysqlreport 首先會把狀態報告寫到臨時文件中,如果 --relative 的值是 整數(而非 本地文件)時,mysqlreport 會顯示它把文件寫到哪了。那么就可以直接通過查看這些文件內容來觀察服務器的狀況了。
--report-count (-c) N 生成 N 份相關的報告。本選項只有在同時啟用 --relative 選項后才有效。mysqlreport 會自動產生 N+1 份報告:第一份基本報告,以及后面的 N 份相關報告。
--detach 若指定本選項,則 mysqlreport 會派生出進程來,不只是在屏幕顯示結果,還會轉入后臺繼續運行。派生新進程后,mysqlreport 會報告它把結果寫入哪個臨時文件了。本選項還可以指定 --outfile 或 --email 的一個。如果沒有指定 --outfile 或 --email 的值,則產生的臨時文件會被刪除,因為 mysqlreport 派生出新進程后,無法再將結果打印到終端屏幕上了。本選項如果和 --relative 一起使用的話就更有意義了,這樣 mysqlreport 就能定時報告信息,而無需人工登錄等方式在中斷執行了。使用如下的命令,就能讓 mysqlrepot 隔一個小時再次產生一次報告,并將結果發送到自己的信箱中去:
mysqlreport -r 3600 -detach -email host@domain.com
一個小時候后,mysqlreport 通過email發送報告,刪除臨時文件,并且干凈地終止。
--debug 顯示調試信息。
--dtq (Questions 報告的 Total 部分中)顯示所有的查詢分布報告。這些查詢主要包括以下四部分:DMS (見下面)、COM_ (見下面)、COM_QUIT(見 COM_QUIT and Questions)、以及其他未知。每部分根據其總數倒序顯示。
--dms (Questions 報告的 DMS 部分中)顯示所有的數據維護語句(DMS)報告。DMS是下面文檔 13.2. Data Manipulation Statements 中提到的那些(當前主要有:SELECT, INSERT, REPLACE, UPDATE, and DELETE)。每個 DMS 根據其總數倒序顯示。
--com N (Questions 報告之后)以降序顯示最多 N 個 非DMS Com_ 狀態值。如果沒有指定 N 的值,則默認是 3。所謂的非DMS Com_ 狀態值,包括:Com_change_db、Com_show_tables、Com_rollback 等。
--sas (Questions 報告之后),顯示所有的 Select_ 和 Sort_ 報告。詳情請看 MySQL Select and Sort Status Variables。
--qcache 如果打開查詢緩存的話,則顯示查詢緩存狀態報告。
--tab (Create Temp 報告之后)顯示 線程、放棄的、流量 等狀態報告。從 mysqlreport v2.3 開始,線程狀態是從 Threads_ 狀態值讀取。
--innodb 顯示 InnoDB 狀態報告,包括MySQL 5.0.2以后才支持的InnoDB 緩沖池,以及5.0.3以后才支持的InnoDB鎖狀態報告。
--innodb-only 只顯示 InnoDB 報告;不顯示其他報告。
--dpr 顯示 InnoDB 數據,頁,行報告。
--all 如果可能,則顯示所有的狀態報告。一些報告,比如查詢緩存、InnoDB等需要特定版本的MySQL或者其他特性才能支持。例如,盡管服務器支持查詢緩存,但是它被禁用了,則不管是否指定了 --qcache 或者 --all,都不會顯示查詢緩存的報告
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com