当前位置: 首页 > 工具软件 > mytop > 使用案例 >

mysql实时监控工具mytop

谭毅然
2023-12-01

mysql实时监控工具mytop

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”,成功。

下载安装mytop

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

配置mytop

vi ~/.mytop
在文件中添加以下内容,然后保存并退出。

host=localhost
db=testDB
delay=5 # 刷新频率:秒
port=3306
socket=
batchmode=0
color=1
idle=1

开始监控:

启动mytop
mytop --prompt

查看帮助
man mytop

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 信息

监控时显示错误 uninitialized

问题描述:
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;
}
 类似资料: