- 论坛徽章:
- 0
|
命令行选项的格式是 --选项,不过 -选项 的格式也可以。所有的选项都有其缩写,只要是唯一的。例如,选项 --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,都不会显示查询缓存的报告。
mysqlreport
可将重要的 MySQL 系统信息整理为具有较高可读性的报表,使你更容易阅读与深入理解目前 MySQL 的实际运作状况。除了手动执行
SHOW STATUS 指令并以人眼去过滤与判断目前的系统状态以外,mysqlreport 大概是较好(八成也是唯一)的替代方案。
目前
的 mysqlreport 版本可以产生大量、具有完善信息的报表,其报表完整的覆盖了实务上所有重要的 MySQL 系统信息,也可以产生只具有最重
要信息的较精简报表。完整的报表包含了 14 种不同面向,超过 121 行的完整信息;精简的报表包含了 6 种不同面向,总计 29 行的最重要信
息。
此文件可教导您如何解读 mysqlreport 所产生出来的各项信息。如此一来,当您在阅读 mysqlreport 所产生出来的报表时,您才可以回答最重要的问题:『MySQL Server 目前的运作状况究竟如何?』
为了让您有较深入的理解,此文件将从报表的第一行开始逐项的解释,当您阅读完此文件后,您应该具有完整的知识可以将 mysqlreport 布署在任何 Server 上,并且有效的掌握 MySQL Server 的运作实况。
在开始之前,这里有一份范例报表,我们将以此份报表为蓝本开始进行教学。
(建议您将此报表打印出来和内文对照看,这样子会比较容易理解文章内容)
PHP 语法:
1 MySQL 5.0.3 uptime 0 0:34:26 Fri Sep 1 19:46:02 2006
2
3 __ Key _________________________________________________________________
4 Buffer used 380.00k of 512.00M %Used: 0.07
5 Current 59.32M %Usage: 11.59
6 Write ratio 0.93
7 Read ratio 0.00
8
9 __ Questions ___________________________________________________________
10 Total 98.06k 47.46/s
11 DMS 81.23k 39.32/s %Total: 82.84
12 QC Hits 16.58k 8.02/s 16.91
13 COM_QUIT 200 0.10/s 0.20
14 Com_ 131 0.06/s 0.13
15 -Unknown 82 0.04/s 0.08
16 Slow 0 0.00/s 0.00 %DMS: 0.00
17 DMS 81.23k 39.32/s 82.84
18 SELECT 64.44k 31.19/s 65.72 79.33
19 INSERT 16.75k 8.11/s 17.08 20.61
20 UPDATE 41 0.02/s 0.04 0.05
21 REPLACE 0 0.00/s 0.00 0.00
22 DELETE 0 0.00/s 0.00 0.00
23 Com_ 131 0.06/s 0.13
24 change_db 119 0.06/s 0.12
25 show_fields 9 0.00/s 0.01
26 show_status 2 0.00/s 0.00
27
28 __ SELECT and Sort _____________________________________________________
29 Scan 38 0.02/s %SELECT: 0.06
30 Range 14 0.01/s 0.02
31 Full join 3 0.00/s 0.00
32 Range check 0 0.00/s 0.00
33 Full rng join 0 0.00/s 0.00
34 Sort scan 14 0.01/s
35 Sort range 26 0.01/s
36 Sort mrg pass 0 0.00/s
37
38 __ Query Cache _________________________________________________________
39 Memory usage 17.81M of 32.00M %Used: 55.66
40 Block Fragmnt 13.05%
41 Hits 16.58k 8.02/s
42 Inserts 48.50k 23.48/s
43 Prunes 33.46k 16.20/s
44 Insrt:Prune 1.45:1 7.28/s
45 Hit:Insert 0.34:1
46
47 __ Table Locks _________________________________________________________
48 Waited 1.01k 0.49/s %Total: 1.24
49 Immediate 80.04k 38.74/s
50
51 __ Tables ______________________________________________________________
52 Open 107 of 1024 %Cache: 10.45
53 Opened 118 0.06/s
54
55 __ Connections _________________________________________________________
56 Max used 77 of 600 %Max: 12.83
57 Total 202 0.10/s
58
59 __ Created Temp ________________________________________________________
60 Disk table 10 0.00/s
61 Table 26 0.01/s
62 File 3 0.00/s
63
64 __ Threads _____________________________________________________________
65 Running 55 of 77
66 Cache 0 %Hit: 0.5
67 Created 201 0.10/s
68 Slow 0 0.00/s
69
70 __ Aborted _____________________________________________________________
71 Clients 0 0.00/s
72 Connects 8 0.00/s
73
74 __ Bytes _______________________________________________________________
75 Sent 38.46M 18.62k/s
76 Received 7.98M 3.86k/s
Report Header: Line 1
报表的第一行包含了三样不同的信息:
MySQL Server 的版本、自上次启动后已经过多少时间、目前 Server 的日期与时间。有些人会定时让系统自动产生报表
(eg. cron)然后用程序去分析进行分析,此时表头将可用来协助您辨识出不同时间点的报表。对于那些租用或使用虚拟主机的管理者,表头可以协助您了
解自己所需面对的是什么样的 Server。MySQL Server 版本可以指出该 Server 有提供或没有提供那些功能,而它的
Uptime 则表示该报表具有多大的代表性。Uptime 是重要的指标,可让您了解此份报表所包含的信息是否可能有偏误,一般来说 Uptime
最少要有一小时会比较适当,甚至光是一小时其实也还不够。例如您的 Server 可能已执行了六个小时,但此六小时皆是在使用率最低的午夜,此时产生出
的报表就很不具有代表性。最理想的情况下,你会希望 MySQL Server 至少已经执行了一整天,这样子一来你就可以确定报表中的信息已包含了
Server 负载的高峰与低峰期,而不是只包含其中之一。在范例报表中 Server 只执行了 34 分钟,因此该报表的代表性是不足的,但因为这
只是用来做范例,也就没什么关系。 |
|