mysql可以说如今最为流行的数据库了,虽然现在nosql的风头正盛。但我想很多公司重要的业务数据不会用nosql去跑。而在这些方面mysql似乎的使用更盛(开源免费,让我花钱去买oracle,我想我是不会买的)。君不见taobao、腾讯、facebook这些牛X的IT公司们都自己去修改mysql,将核心业务数据运行在mysql之下。

而平时要对mysql的运行性能进行监控的话工具也非常多。强大复杂的有 oracle官方提供的mysql 企业监控器(当然是收费的),当然开源的配置nagios、cacti上运行的mysql-monitor插件也不少。而想要实时的观察的话,也有mytop、mycheckpoint(绘图显示)、mtop(托管在sourceforge,从04年至今没见更新了。还有一个mongodb 的监控工具也要mtop,托管在github)等等。本篇主要介绍mytop:

一、安装

mytop的项目页面为:http://jeremy.zawodny.com/mysql/mytop/

该工具说白了就是一段perl脚本,依赖于别外一个perl包。主页上作者说的也比较明白了:

It runs on most Unix systems (including Mac OS X) which have Perl, DBI, and Term::ReadKey installed. And with Term::ANSIColor installed you even get color. If you install Time::HiRes, you’ll get good real-time queries/second stats. As of version 0.7, it even runs on Windows (somewhat)

perl-DBI包可以通过yum安装。

1wget http://search.cpan.org/CPAN/authors/id/J/JS/JSTOWE/TermReadKey-2.30.tar.gz
2wget http://jeremy.zawodny.com/mysql/mytop/mytop-1.6.tar.gz

TermReadKey和mytop解包后运行:

1perl Makefile.PL
2make && make install

通过以上方式即可安装。不过上面提到最好还要安装time::hires包。我这里测试倒没有安装。

二、修改源代码

从作者主页上也不难看出,作者从07年以后就没更新过代码,我装完后发现直接运行出错。

1#mytop
2Error in option spec: "long|!"
3修改代码:
4
5找到
6"long|!" => $config{long_nums},
7改为:
8"long|long_nums|l!" => $config{long_nums},

此处修改后,虽然可以运行了,不过在查看界面里又有错误:Use of uninitialized value $host in substitution (s///) at mytop line 956.

1找到
2host =~ s/^([^.]+)._/1/;
3thread->{Host} = host;
4改为:
5if (host) {
6    host =~ s/^([^.]+)./1/;
7    thread->{Host} = $host;
8}

重新运行mysql -uroot -ppass -ddbname 就显示正常了。

三、参数

  • -u / –user :指定 username,预设是 root
  • -p / –pass / –password :指定 password,预设是 none
  • -h / –host :指定 MySQL server 的 hostname,预设是 localhost
  • -P / –port :指定连接 MySQL server 的 port,预设是 3306
  • -s / –delay :更新的秒数,预设是 5 秒
  • -d / –db / –database :指定连接的资料库,预设是 test
  • -b / –batch / –batchmode:指定为 batch mode,每次更新不会清除旧的显示结果,会将更新资料显示上最上方,预设是 unset
  • -S / –socket :指定使用 MySQL socket 直接连线,而不使用 TCP/IP 连线,预设是 none (当 mytop 和 MySQL 在同一台时才能使用)
  • –header or -noheader:是否要显示表头,预设是 header
  • –color or –nocolor:是否要使用颜色,预设是 color
  • -i / -idle or -noidle:idle 的 thread 是否要出现在清单上,预设是 idle

注:因为这里涉及到mysql的密码这个敏感信息。所以在使用配置文件或使用命令行时注间设置好权限和清理历史记录。最好能设置一个只有只读权限的用户去查看。

mytop 快捷键

  • s:设定更新时间
  • p:暂停画面更新
  • q:离开
  • u:只看某个使用者的 thread
  • o:反转排列顺序

注:通过配置文件查看时,是通过~/.mtop连接的。