mytop类似于linux top工具,可以实时监控mysql服务器的性能信息。
yum install -y perl-CPAN
# cpan
# cpan > install DBI
# cpan > install Term::ReadKey
# cpan > install DBD::mysql
# cpan > exit
安装“install DBD::mysql”时提示以下错误:
# Failed test 'use DBD::mysql;'
# at t/00base.t line 15.
# Tried to use 'DBD::mysql'.
# Error: Can't load '/root/.cpan/build/DBD-mysql-4.050-4iWLQk/blib/arch/auto/DBD/mysql/mysql.so' for module DBD::mysql: libmysqlclient.so.20: cannot open shared object file: No such file or directory at /usr/lib64/perl5/DynaLoader.pm line 190.
错误的原因是未能引入libmysqlclient.so.20库
解决办法:
通过 find命令 查找库文件存在:
find / -name libmysqlclient.so.20
然后建立链接:
ln -s /usr/local/mysql/lib/libmysqlclient.so.20 /usr/lib64/libmysqlclient.so.20
重新安装“install DBD::mysql”,成功。
cd /tmp
wget http://jeremy.zawodny.com/mysql/mytop/mytop-1.6.tar.gz
tar xzf mytop-1.6.tar.gz
cd mytop-1.6
perl Makefile.PL
make
make install
vi ~/.mytop
在文件中添加以下内容,然后保存并退出。
host=localhost
db=testDB
delay=5 # 刷新频率:秒
port=3306
socket=
batchmode=0
color=1
idle=1
启动mytop
mytop --prompt
查看帮助
man mytop
MySQL on localhost (5.7.34-log) up 495+22:28:39 [14:34:00]
Queries: 322.0 qps: 0 Slow: 0.0 Se/In/Up/De(%): 00/00/00/00
qps now: 0 Slow qps: 0.0 Threads: 12 ( 1/ 7) 00/00/00/00
Key Efficiency: 87.2% Bps in/out: 0.0/ 0.0 Now in/out: 8.3/686.3
Id User Host/IP DB Time Cmd Query or State
-- ---- ------- -- ---- --- ----------
123293 root localhost testDB 0 Sleep
123297 root localhost testDB 0 Sleep
123404 root localhost testDB 0 Query show full processlist
123302 root localhost testDB 12 Sleep
第1行 显示数据库版本信息
第2行是整体信息
Queries 服务器处理过的query总数
qps 每秒处理的query数量的平均值
Slow 慢查询总数
Se/In/Up/De(%) Select,Insert,Update,Delete 各自的占比
第3行是实时信息,本刷新周期内的信息统计,刷新周期是在配置文件中指定
qps now 本周期内的每秒处理query的数量
Slow qps 本周期内的每秒慢查询数量
Threads 当前连接线程数量,后面括号内的第一个数字是active状态的线程数量,第二个数字是在线程缓存中的数量
最后一列是本周期内的 Select,Insert,Update,Delete 各自的占比
Key Efficiency 表示有多少key是从缓存中读取,而不是从磁盘读取的
Bps in/out 表示mysql平均的流入流出数据量
Now in/out
是本周期内的流入流出数据量
剩下的就是线程信息列表
列出了当前的mysql线程,根据idle状态时间排序,通过o 键可以选择升序或降序
列表中显示出各线程的详细信息,例如 线程ID、用户名、客户端的地址、连接的数据库名称、详细查询语句
会发现 “show full processlist” 一直都在,因为 mytop 会使用这个语句收集 mysql 信息
问题描述:
Use of uninitialized value $host in substitution (s///) at /root/perl5/bin/mytop line 955, line 3.
解决办法
vi mytop
跳到955行,找到
$host =~ s/^([^.]+).*/$1/;
$thread->{Host} = $host;
改为:
if ($host)
{
$host =~ s/^([^.]+).*/$1/;
$thread->{Host} = $host;
}