欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

mysqlreport 博客分类: DATABASE mysql数据库调优 

程序员文章站 2024-03-16 14:51:28
...



1、MySQLReport 简介
MySQLReport 是一个用perl语言编写的MySQL数据库监控脚本,是一个*软件,它把MySQL数据库的运行状态值(showstatus)以更友好的方式显示出来,通过它可以更方便的查看MySQL数据库的运行状况。目前该脚本的版本是3.5,下载网址是:http://hackmysql.com/scripts/mysqlreport.zip 。
2、MySQLReport安装方法
       MySQLReport 是用perl语言编写,所以想要运行它首先需要安装perl环境;它还要与MySQL数据库连接,所以还需要安装数据库接口 DBI 和 数据库驱动 DBD-MySQL 。
       不同的平台配置环境、安装软件的方式也有所差别,最通用的方式当然是分别下载三个软件包,分别编译、安装。
我使用的操作系统是CentOS3 Update9,要连接的数据库是mysql-5.1.26-rc-linux-i686-glibc23.tar.gz 。CentOS 其实就是 Redhat,所以它本身也提供相应的三个软件包,当然是以RPM形式的提供的。系统安装的时候一般默认为安装 perl 和 数据库接口 DBI,也可以在定制安装的过程中,选择软件包的 “服务器” -> “MySQL数据库” 选项,选中“perl - DB - MySQL”,如果系统已经安装完成,同样也可以很方便的安装:以XWindow形式登录系统,利用 “主菜单” -> “系统设置” ->“添加/删除应用程序” 可以手工的修改软件包,在“添加/删除应用程序”窗口中找到 “服务器” -> “MySQL数据库”选项,点击“细节”按钮,选中的“额外软件包”选中“perl - DB - MySQL”,点击“关闭”按钮关闭当前窗口
,最后点击“更新”,即可安装MySQL的数据库驱动。
       根据 mysql 压缩包中提供 INSTALL-BINARY 文档安装MySQL,安装完成后,默认的配置文件需要修改一下,否则运行 MySQLReport 会报错,操作如下:
用MySQL提供的示例文件覆盖默认的配置文件(注意 # 为提示符)
# cp /usr/local/mysql/support-files/my-medium.cnf /etc/my.cnf
编辑 /etc/my.cnf 文件,修改 socket = /temp/mysql.sock 为 socket = /var/lib/mysql/mysql.sock
解压 mysqlreport.zip 包,建议将 mysqlreport 执行文件复制到 /usr/local/mysql/bin 目录下,并修改文件属性 #chmod +x mysqlreport
如果MySQL数据库没有设置root用户密码,可以在 /usr/local/mysql/bin 目录直接执行以下命令:
#./mysqlreport
如果MySQL数据库设置了root用户密码,需要加入用户名和密码参数:
#./mysqlreport --user root --password 1 
如果监控的是远程主机上的MySQL数据库,还要加上主机选项:
#./mysqlreport --host 172.20.16.117 --user admin --password 1 

如果需要查看mysqlreport的所有选项,执行命令 
#./mysqlreport --help 



MySQLReport使用说明

MySQLReport 以很友好的方式显示 MySQL状态。事实上,它几乎报告了所有的状态。不像 SHOW STATUS 只是在显示了100多个状态值,MySQLReport 则以人性化的方式阐释和格式化了这些状态值,大大增加了其可读性。

MySQLReport的好处是可以快速的查看各种状态参数组,从而了解服务器的运行状态情况,而无需从 SHOW STATUS的结果中人工计算。例如索引读取比率是个重要的参数,但是 SHOW STATUS 中并没有显示;它是一个推断值(key_reads 和key_read_requests 的比值)。

本文档描述了 MySQLReport 的所有命令行选项,大部分是用于控制如何显示结果的。本文并没有解释这些推断值是怎么计算得到的,可以点击 理解MySQLReport 查看具体的计算方法。 

注意:命令行选项的格式是 --选项,不过 -选项 的格式也可以。所有的选项都有其缩写,只要是唯一的。例如,选项 --host 可以缩写成 --ho,不过不能写成 --h,因为 --h 有歧义,可能是 --host 或者 --help。 

选项列表:

--user USER

--password 从 2.3 版本开始,--password 可以在后面加上参数,如 "--password FOO"。如果命令行中只指定了选项 --password,则会提示输入密码。

--host ADDRESS

--port PORT

--socket SOCKET

--no-mycnf 告诉 MySQLReport 不要读取 ~/.my.cnf,默认会去读取这个文件。--user 和 --password 总是覆盖从 ~/.my.cnf 中取得的结果。  

--infileFILE 直接从文件中读取状态文件,而不是从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。 

--outfileFILE 在屏幕显示完报告结果后,将结果写入文件中。MySQLReport的内部机制总是先将结果写入临时文件中。然后将该临时文件里的内容打印到屏幕上。然后,如果指定了 --outfile 选项,则将临时文件拷贝成OUTFILE。如果指定选项 --email,则会删除临时文件。 

--email ADDRESS在屏幕显示完结果后,将结果发送到邮件地址 ADDRESS 中去。欲该选项,需要在 /usr/sbin/ 目录下有 sendmail程序,因此无法在 windows 平台下使用。/usr/sbin/sendmail 可以符号链接到 qmail,或者任何其他能模拟sendmail -t 方式的 MTA 程序。邮件来源是:MySQLReport,主题是:MySQL status report onHOST,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 份相关报告。  

---help  显示帮助信息。

-detach若指定本选项,则 MySQLReport 会派生出进程来,不只是在屏幕显示结果,还会转入后台继续运行。派生新进程后,MySQLReport会报告它把结果写入哪个临时文件了。本选项还可以指定 --outfile 或 --email 的一个。如果没有指定 --outfile 或--email 的值,则产生的临时文件会被删除,因为 MySQLReport 派生出新进程后,无法再将结果打印到终端屏幕上了。本选项如果和--relative 一起使用的话就更有意义了,这样 MySQLReport就能定时报告信息,而无需人工登录等方式在中断执行了。使用如下的命令,就能让 mysqlrepot隔一个小时再次产生一次报告,并将结果发送到自己的信箱中去:MySQLReport -r 3600 -detach [email=-%3Ca%20href=]emailhost@domain.com[/email]">-emailhost@domain.com ,一个小时候后,MySQLReport 通过email发送报告,删除临时文件,并且干净地终止。 

--debug  显示调试信息。