MySQL运行状态的监控是每个运维工程师,和MySQL DBA的主要工作之一。我们把MySQL的监控分为两个部分,一部分为基本状态的监控(请参考《Linux 系统运维之运维监控》),一部分为性能方面的监控,是为MySQL 性能优化提供的参考信息,在这一章节,详细讲解,MySQL 性能监控方面的内容。

7.1 性能监控的工具

MySQL的命令行中,DBA们通常使用一下命令来获取MySQL的状态报告:

Mysql> show status;

Mysql> show master status;

Mysql> show slave status;

Mysql> show inodb status;

下面是show status输出的最后一行,可以看到总共有268行。面对如此庞大的性能指标,让很多DBA望而生畏。

268 rows in set (0.00 sec)

7.2 mysqlreport

Mysqlreport 是用perl编写的一个命令行工具,解决了show status产生的大量我们难以阅读的状况。

7.2.1 mysqlreport的相关资源

http://hackmysql.com/mysqlreport      (官方首页)

http://hackmysql.com/mysqlreportguide  (用户手册)

7.2.2 mysqlreport 安装

Mysqlreport需要Perl-DBIPerl-DBD-Mysql的支持。

[root@MySQL-Master ~]# cd /usr/local/src

[root@MySQL-Master src]# wget http://hackmysql.com/scripts/mysqlreport-3.5.tgz

[root@MySQL-Master src]# tar zxvf mysqlreport-3.5.tgz 

mysqlreport-3.5/

mysqlreport-3.5/COPYING

mysqlreport-3.5/mysqlreportdoc.html

mysqlreport-3.5/mysqlreportguide.html

mysqlreport-3.5/mysqlreport

7.2.3 mysqlreport 参数详解

 

[root@MySQL-Master mysqlreport-3.5]# 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    #主机IP或可以解析的域名

   --port PORT       Connect to MySQL at PORT         #mysql 端口。

   --socket SOCKET   Connect to MySQL at SOCKET     #设置通过mysql socket连接。

   --no-mycnf        Don't read ~/.my.cnf               #不读取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.