MySQL效能监控工具mysqlreport安装和中文说明
管理 mysql 最让人困扰的就是如何有效的掌握 MySQL 的健康状况,因为 MySQL 虽然有提供许多系统变量值供您参考,但这些零散的数据若要手动搜集与过滤将会是一件十分没有效率的事情(除非您写 Scripts 去分析)。而接下来要介绍的这套 “工具” 其实是由 hackmysql.com 的站长所撰写的 perl Scritps,旨在协助 MySQL DBA 搜集与分析 MySQL 的运作状况。
官方网站: http://hackmysql.com/
软件下载: http://hackmysql.com/mysqlreport
mysqlreport以很友好的方式显示 MySQL状态变。事实上,它几乎报告了所有的状态。不像 SHOW STATUS 只是在显示了100多个状态值,mysqlreport 则以人性化的方式阐释和格式化了这些状态值,大大增加了其可读性。
mysqlreport 的好处是可以快速的查看各种状态参数组,从而了解服务器的运行状态情况,而无需从 SHOW STATUS 的结果中人工计算。例如索引读取比率是个重要的参数,但是 SHOW STATUS 中并没有显示;它是一个推断值(key_reads 和 key_read_requests 的比值)。
mysql命令行中精彩使用下面的指令来获取当前数据库的实时状态:
mysql>show status;
mysql>show innodb status;
但是他们的显示结果不太友好,我们需要更好的更加人性化的分析结果,而不是堆出来一堆数字。mysqlreport是一个第三方的Mysql状态报告工具,它把mysql的show status 和 show innodb status的结果进行一系列的后期处理,让可读性更强,更友好。 下面是mysqlreport的安装过程:
MySQLReport 是用perl语言编写,所以想要运行它首先需要安装perl环境;它还要与MySQL数据库连接,所以还需要安装数据库接口 DBI 和 数据库驱动 DBD-MySQL 。
# perl -v //如果显示perl版本说明perl环境已经安装
安装DBI
yum -y install perl-DBI
或者
# wget http://ftp.cuhk.edu.hk/pub/packages/perl/CPAN/authors/id/T/TI/TIMB/DBI-1.616.tar.gz
# tar zxvf DBI-1.616.tar.gz
# cd DBI-1.616
# perl Makefile.PL
# make
# make test
# make
# make install
安装DBD-mysql
yum -y install perl-DBD-MySQL
或者
# wget http://search.cpan.org/CPAN/authors/id/C/CA/CAPTTOFU/DBD-mysql-4.020.tar.gz
# tar zxvf DBD-mysql-4.020.tar.gz
# cd DBD-mysql-4.020
# perl Makefile.PL --mysql_config=/usr/local/mysql/bin/mysql_config
# make
# make test
如果报错:
PERL_DL_NONLAZY= /usr/bin/perl "-MExtUtils::command::MM" "-e" "test_harness(0, 'blib/lib', 'blib/Arch')" t/*.t t/00base....................ok 1/6
# Failed test 'use DBD::mysql;' t/00base....................NOK 2
# in t/00base.t at line 21.
# Tried to use 'DBD::mysql'.
# Error: Can't load '/usr/local/src/DBD-mysql-4.020/blib/arch/auto/DBD/mysql/mysql.so' for module DBD::mysql: libmysqlclient.so.16: cannot open shared object file: No such file or directory at /usr/lib64/perl5/5.8.8/x86_64-Linux-thread-multi/DynaLoader.pm line 230.
# at (eval 6) line 2 # Compilation failed in require at (eval 6) line 2.
# BEGIN failed--compilation aborted at t/00base.t line 21.
FAILED--Further testing stopped: Unable to load DBD::mysql make: *** [test_dynamic] Error 9
解决办法:
# cp /usr/local/mysql/lib/mysql/* /usr/lib
# cp /usr/local/mysql/lib/mysql/* /usr/lib64/ (如果64位 否则是lib) # make
# make install
安装mysqlreport
http://pkgs.fedoraproject.org/repo/pkgs/mysqlreport/mysqlreport-3.5.tgz/33a345f5e2c89b083a9ff0423f7fd7b4/mysqlreport-3.5.tgz
参数的说明:
mysqlreport --help mysqlreport v3. Apr
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 )
--detach Fork and detach from terminal (run in background)
--help Prints this
--debug Print debugging information
以下是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。或者, 个 table_cache:table_cache = 。M 指兆字节,而非百万。因此 18M 是 ,,,而非 ,,。如果这些服务器变量没有指定,则使用默认以下默认值:0.0., , , 8M, , ,就可能会让报告结果看起来很奇怪。 注意:MySQL 服务器版本在 5.1. 或更新时,尽管系统变量 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 选项来控制的。默认是产生 份相关的报告。例如,指定 --relative 的值为 ,则会产生 份报告:第一份会马上生成,第二份会在 秒后再次生成。第二份报告中的数值会和前面的那份相关。例如,前面那份中总共有 .00k 次查询,在这 秒的间隔时间里接受了新的 .00k 次查询,则第二份的报告中的总查询次数是 .00k 而非 .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+ 份报告:第一份基本报告,以及后面的 N 份相关报告。 --detach 若指定本选项,则 mysqlreport 会派生出进程来,不只是在屏幕显示结果,还会转入后台继续运行。派生新进程后,mysqlreport 会报告它把结果写入哪个临时文件了。本选项还可以指定 --outfile 或 --email 的一个。如果没有指定 --outfile 或 --email 的值,则产生的临时文件会被删除,因为 mysqlreport 派生出新进程后,无法再将结果打印到终端屏幕上了。本选项如果和 --relative 一起使用的话就更有意义了,这样 mysqlreport 就能定时报告信息,而无需人工登录等方式在中断执行了。使用如下的命令,就能让 mysqlrepot 隔一个小时再次产生一次报告,并将结果发送到自己的信箱中去: # mysqlreport -r -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 的值,则默认是 。所谓的非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. 开始,线程状态是从 Threads_ 状态值读取。 --innodb 显示 InnoDB 状态报告,包括MySQL 5.0.2以后才支持的InnoDB 缓冲池,以及5..3以后才支持的InnoDB锁状态报告。 --innodb-only 只显示 InnoDB 报告;不显示其他报告。 --dpr 显示 InnoDB 数据,页,行报告。 --all 如果可能,则显示所有的状态报告。一些报告,比如查询缓存、InnoDB等需要特定版本的MySQL或者其他特性才能支持。例如,尽管服务器支持查询缓存,但是它被禁用了,则不管是否指定了 --qcache 或者 --all,都不会显示查询缓存的报告。
最终产生的结果:
[root@localhost mysqlreport-3.5]# ./mysqlreport --user root --password sina.com --socket /tmp/mysqld.sock
Use of uninitialized value $is in multiplication (*) at ./mysqlreport line .
Use of uninitialized value in formline at ./mysqlreport line .
Use of uninitialized value in formline at ./mysqlreport line .
MySQL 5.5.-log uptime :: Fri Jul :: __ Key _________________________________________________________________
Buffer used of 512.00M %Used: 0.00
Current 93.36M %Usage: 18.24
Write hit 0.00%
Read hit 0.00% __ Questions ___________________________________________________________
Total 421.97M 702.5/s
QC Hits 302.51M 503.6/s %Total: 71.69
Com_ 71.56M 119.1/s 16.96
DMS 47.48M 79.1/s 11.25
COM_QUIT .49k 0.7/s 0.10
+Unknown .83k 0.0/s 0.00
Slow s .12k 0.0/s 0.00 %DMS: 0.00 Log: OFF
DMS 47.48M 79.1/s 11.25
SELECT 46.66M 77.7/s 11.06 98.27
INSERT .56k 1.4/s 0.19 1.72
DELETE .37k 0.0/s 0.00 0.00
UPDATE 0.0/s 0.00 0.00
REPLACE /s 0.00 0.00
Com_ 71.56M 119.1/s 16.96
change_db 69.87M 116.3/s 16.56
set_option 1.29M 2.2/s 0.31
commit .13k 0.6/s 0.09 __ SELECT and Sort _____________________________________________________
Scan .90k 0.0/s %SELECT: 0.05
Range .17k 0.0/s 0.00
Full join /s 0.00
Range check /s 0.00
Full rng join /s 0.00
Sort scan 0.0/s
Sort range /s
Sort mrg pass /s __ Query Cache _________________________________________________________
Memory usage 352.62M of 512.00M %Used: 68.87
Block Fragmnt 0.00%
Hits 302.51M 503.6/s
Inserts 46.65M 77.7/s
Insrt:Prune 46.65M: 77.7/s
Hit:Insert 6.48: __ Table Locks _________________________________________________________
Waited /s %Total: 0.00
Immediate 47.48M 79.1/s __ Tables ______________________________________________________________
Open of %Cache: 82.81
Opened 0.0/s __ Connections _________________________________________________________
Max used of %Max: 8.61
Total .50k 0.7/s __ Created Temp ________________________________________________________
Disk table .36k 0.0/s
Table .95k 0.0/s Size: 16.0M
File 0.0/s __ Threads _____________________________________________________________
Running of
Cached of %Hit:
Created .49k 0.7/s
Slow /s __ Aborted _____________________________________________________________
Clients /s
Connects 0.0/s __ Bytes _______________________________________________________________
Sent .58G .2k/s
Received .33G .8k/s __ InnoDB Buffer Pool __________________________________________________
Usage 320.58M of .00G %Used: 15.65
Read hit 100.00%
Pages
Free .55k %Total: 84.35
Data .89k 13.65 %Drty: 0.00
Misc 2.00
Latched 0.00
Reads .07G .1k/s
From file .54k 0.0/s 0.00
Ahead Rnd /s
Ahead Sql /s
Writes 7.10M 11.8/s
Flushes .23k 0.2/s
Wait Free /s __ InnoDB Lock _________________________________________________________
Waits 0.0/s
Current
Time acquiring
Total ms
Average ms
Max ms __ InnoDB Data, Pages, Rows ____________________________________________
Data
Reads .13k 0.0/s
Writes 1.84M 3.1/s
fsync .88k 0.1/s
Pending
Reads
Writes
fsync Pages
Created .90k 0.0/s
Read .99k 0.0/s
Written .23k 0.2/s Rows
Deleted .32k 0.0/s
Inserted .55k 1.4/s
Read 800.52M .3k/s
Updated .58k 0.0/s
MySQL效能监控工具mysqlreport安装和中文说明的更多相关文章
- 烂泥:jira7.2安装、中文及破解
. jira的主要配置文件,存放在/opt/atlassian/jira/conf/server.xml文件中,如下: vim /opt/atlassian/jira/conf/server.xml ...
- linux环境下安装sphinx中文支持分词搜索(coreseek+mmseg)
linux环境下安装sphinx中文支持分词搜索(coreseek+mmseg) 2013-11-10 16:51:14 分类: 系统运维 为什么要写这篇文章? 答:通过常规的三大步(./confi ...
- Ubuntu 15.04下MySQL 5.6.25不支持中文解决办法
Ubuntu 15.04下MySQL 5.6.25不支持中文解决办法,apt-get install 安装的,不是源码包安装的mysql. 1 修改mysql的配置文件 /etc/mysql/conf ...
- ubuntu12.04:Mysql数据库:手动安装
首先到mysql的下载中心上下载最新的tar.gz包: 1.在浏览器中输入http://www.mysql.com/downloads/ 进入mysql的下载中心,在这里有使用mysql开发的一些工具 ...
- (转)jira7.2安装、中文及破解
转自:http://www.cnblogs.com/ilanni/p/6200875.html 本文由ilanniweb提供友情赞助,首发于烂泥行天下 想要获得更多的文章,可以关注我的微信ilanni ...
- mysql 不能插入中文和显示中文
一)不能显示中文解决办法: 参考:http://bbs3.chinaunix.net/thread-880131-1-1.html 1:windows平台,因为windows操作系统默认的是用了gb2 ...
- sql sever和mysql 卸载及oracle安装
sql sever和mysql的卸载及Oracle安装 目的:本人健忘,以后难免会重装系统啥的,软件卸了装是常有的事,特此写此详细教程,一是方便自己以后重装的时候可以看看:二是如果有某位初学者有幸光临 ...
- 【JAVAWEB学习笔记】26_Linux基础:简介安装、常用命令和JDK、Mysql、Tomcat的安装
Linux基础 学习目标 1.了解Linux的简介与安装 2.掌握Linux常用的命令 3.掌握Linux系统上JDK.Mysql.Tomcat的安装 一.Linux的简介 1.Linux的概述 Li ...
- [转]关于Navicat和MYSQL字符集不统一出现的中文乱码问题
原文链接:关于Navicat和MYSQL字符集不统一出现的中文乱码问题 最近遇到一串关于MYSQL中文乱码的问题,问题背景是这样的: 在此之前,服务器上安装好MySQL之后就立马重新配置了字符集为ut ...
随机推荐
- RabbitMQ、Rdis
RabbitMQ RabbitMQ:官方网址:http://www.rabbitmq.com/ Install Erlang # rpm -ivh erlang-18.3-1.el6.x86_64.r ...
- 【uTenux】学习一个嵌入式操作系统-uTenux
[这个是汇总] 最近有点时间,参加了EEPW论坛和悠龙咨询组织的一个嵌入式操作系统uTenux试用活动.本来想借助这个活动提供的开发板做一个小项目,奈何OS使用功底太次.于是,这个活动被我降低到了学习 ...
- SDWebImage总结
SDWebImage 支持异步的图片下载+缓存,提供了 UIImageView+WebCache的 category,方便使用. 优点:首先NSURLCache是缓存原始数据(raw data)到磁盘 ...
- [Linux] 无法访问国外网站,完成epel源安装的解决办法--待续
一.缘由: 由于一个机房的网络限制,无法访问国外IP地址,在安装一些开源软件的时候比如smokeping.ansible就无法从epel源在线安装, 编译安装的话,又需要安装各种依赖,麻烦的一逼.所以 ...
- jquery 实现重复点击一个元素时不重复执行效果
jquery 实现重复点击一个元素时不重复执行效果 这需要用到jquery的stop方法 实例 停止当前正在运行的动画: $("#stop").click(function(){ ...
- CentOS 网卡配置bond4(LACP)
交换机开启LACP,配置聚合. 网卡eno1, eno2, eno3.eno1为管理口,eno2和eno3绑定,配置bond4. 配置eno2: vim /etc/sysconfig/network- ...
- gradle << 操作符作废
下面这种写法作废了 task deprecatedSample << { println 'Sample task' } 替换成下面 task newSample { doLast ...
- 如何将Debug文件夹下的资源打包成一个EXE文件直接执行
前言:前段时间写了个小程序,想分享给好友看看,可所以资源都放在Debug文件夹下,整个文件夹发给人家这也太……,为了显得稍微专业一点,想把它们打包一个EXE文件执行,因为我见到到这样的程序,直接一个E ...
- sql-分组排序
我们有一张数据表,需要按照[类别]分组按照[时间]排序,并分组显示各自的序号. 表Archive ArchiveId varchar(30) 文章编号非数字 CategoryId int 文章分类Id ...
- Mware vCenter Server 识别固态硬盘为(非SSD)是什么原因?
人工定义一下: 用root登录进ESXi控制台:esxcli storage nmp device list #列出储存清单esxcli storage nmp satp rule add -s VM ...