这个工具介绍其实是为了后面压测做准备的,如果在压测的过程中,只能进行肉眼的观察,并且手动是录入压测数据,实际上是非常低效的结果,在linux中,就是 因为有着这些开源的第三方辅助工具才使得应用得到更好的支持,当然,这只是其中一个原因而已。最本质的还是应用本身符合企业的需求
这个工具是淘宝的朱旭先生开发的一个小工具,12年开源出来,到现在已经有5年的历史,代码相对久远,但是实用性还是挺好的。适合我们对数据库进行分析定位。如果有版本洁癖的人请慎入,自行分析MySQL内置性能分析库进行分析
orzdba的下载地址为
直接进行SVN下载即可,svn的安装方式yum
[root@gzsd-mysql01-101110215 download]# yum -y install svn
[root@gzsd-mysql01-101110215 download]# svn co http://code.taobao.org/svn/orzdba/trunk
进入查看对应的目录情况
[root@gzsd-mysql01-101110215 download]# cd trunk/
[root@gzsd-mysql01-101110215 trunk]# ll
total 1000
-rw-r--r--. 1 root root 56925 Nov 28 14:48 orzdba
-rw-r--r--. 1 root root 323084 Nov 28 14:48 orzdba_rt_depend_perl_module.tar.gz
-rw-r--r--. 1 root root 639658 Nov 28 14:48 orzdba工具使用说明.pdf
我们需要使用的就是orzdba这个文件,查看其用户(通常软件应用–help是默认的做法)
[root@gzsd-mysql01-101110215 trunk]# chmod +x orzdba
[root@gzsd-mysql01-101110215 trunk]# ./orzdba --help
==========================================================================================
Info :
Created By zhuxu@taobao.com
Usage :
Command line options :
-h,--help Print Help Info.
-i,--interval Time(second) Interval.
-C,--count Times.
-t,--time Print The Current Time.
-nocolor Print NO Color.
-l,--load Print Load Info.
-c,--cpu Print Cpu Info.
-s,--swap Print Swap Info.
-d,--disk Print Disk Info.
-n,--net Print Net Info.
-P,--port Port number to use for mysql connection(default 3306).
-S,--socket Socket file to use for mysql connection.
-com Print MySQL Status(Com_select,Com_insert,Com_update,Com_delete).
-hit Print Innodb Hit%.
-innodb_rows Print Innodb Rows Status(Innodb_rows_inserted/updated/deleted/read).
-innodb_pages Print Innodb Buffer Pool Pages Status(Innodb_buffer_pool_pages_data/free/dirty/flushed)
-innodb_data Print Innodb Data Status(Innodb_data_reads/writes/read/written)
-innodb_log Print Innodb Log Status(Innodb_os_log_fsyncs/written)
-innodb_status Print Innodb Status from Command: 'Show Engine Innodb Status'
(history list/ log unflushed/uncheckpointed bytes/ read views/ queries inside/queued)
-T,--threads Print Threads Status(Threads_running,Threads_connected,Threads_created,Threads_cached).
-rt Print MySQL DB RT(us).
-B,--bytes Print Bytes received from/send to MySQL(Bytes_received,Bytes_sent).
-mysql Print MySQLInfo (include -t,-com,-hit,-T,-B).
-innodb Print InnodbInfo(include -t,-innodb_pages,-innodb_data,-innodb_log,-innodb_status)
-sys Print SysInfo (include -t,-l,-c,-s).
-lazy Print Info (include -t,-l,-c,-s,-com,-hit).
-L,--logfile Print to Logfile.
-logfile_by_day One day a logfile,the suffix of logfile is 'yyyy-mm-dd';
and is valid with -L.
Sample :
shell> nohup ./orzdba -lazy -d sda -C 5 -i 2 -L /tmp/orzdba.log > /dev/null 2>&1 &
==========================================================================================
如果需要使用orzdba,以为其perl脚本依赖于tcprstat
[root@gzsd-mysql01-101110215 trunk]# cd /data/download/
[root@gzsd-mysql01-101110215 download]# wget http://github.com/downloads/Lowercases/tcprstat/tcprstat-static.v0.3.1.x86_64
[root@gzsd-mysql01-101110215 download]# cp tcprstat-static.v0.3.1.x86_64 /usr/bin/tcprstat
[root@gzsd-mysql01-101110215 download]# chmod u+sx /usr/bin/tcprstat
由于是perl开发的工具包,需要安装perl支持的工具集
[root@gzsd-mysql01-101110215 download]# yum -y install perl-Test-Simple.x86_64 perl-Time-HiRes perl-ExtUtils-CBuilder perl-ExtUtils-MakeMaker perl-DBD-MySQL perl-DBI
由于orzdata会去读取hosts文件来获取对应的机器信息,需要往hosts文件中写入对应的信息
[root@gzsd-mysql01-101110215 trunk]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
10.11.10.215 gzsd-mysql01-101110215
- 查看linux主机指标
[root@gzsd-mysql01-101110215 trunk]# ./orzdba -sys -C 10 -i 1 -t -d vda
参数对应的解释在–help中已经很明确的罗列出来了,这里在汇总一下
参数 | 含义 | 备注 |
---|---|---|
-C | Times | 总计多少次 |
-i | Time(second) Interval | 每隔多少秒 |
-t | Print The Current Time | 打印当前时间 |
-d | Print Disk Info | 打印磁盘信息 |
这些信息的获取,实际上是从/proc的进程中获取的
- 监控MySQL响应时间
由于orzdba脚本中并没有接口外层输入账号和密码,所以需要在脚本中进行手动编辑添加对应的账号和密码,否则会提示
按照错误提示,首先需要在数据库层创建一个获取性能的账号,网络上很多都是直接配置root之类的,这种是不合适的,请留心
root@(none) 03:51:07>CREATE USER 'gz_orazdba_account'@'127.0.0.1' IDENTIFIED BY 'FT3U08OuZW+?';
root@(none) 03:54:11>GRANT PROCESS ON *.* TO 'gz_orazdba_account'@'127.0.0.1';
Query OK, 0 rows affected (0.02 sec)
root@(none) 03:54:21>FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.02 sec)
修改orzdba配置属性
my $MYSQL = qq{mysql -s --skip-column-names -uroot -P$port };
#改成
my $MYSQL = qq{mysql -s --skip-column-names -ugz_orazdba_account -p"FT3U08OuZW+?" -h"127.0.0.1" -P$port };
查看时候会出现一个比较难看的排版问题
处理
[root@gzsd-mysql01-101110215 trunk]# mysql_config_editor set --login-path=login --user=gz_orazdba_account --password -h127.0.0.1
Enter password:
[root@gzsd-mysql01-101110215 trunk]# mysql_config_editor print --all
[login]
user = gz_orazdba_account
password = *****
host = 127.0.0.1
再次修改orzdba对应的数据库连接文件为
my $MYSQL = qq{mysql --login-path=login -s --skip-column-names -P$port };
- 监控Server的性能指标
我们最关心的QPS TPS就可以在这里展现了