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 /tmpwget /mysql/mytop/mytop-1.6.tar.gztar xzf mytop-1.6.tar.gzcd mytop-1.6perl Makefile.PLmakemake install
配置mytop
vi ~/.mytop在文件中添加以下内容,然后保存并退出。host=localhostdb=testDBdelay=5 # 刷新频率:秒port=3306socket=batchmode=0color=1idle=1
开始监控:
启动mytopmytop --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/00qps now: 0 Slow qps: 0.0 Threads: 12 ( 1/ 7) 00/00/00/00Key Efficiency: 87.2% Bps in/out: 0.0/ 0.0 Now in/out: 8.3/686.3IdUser Host/IP DBTime Cmd Query or State------ ------- ------ --- ----------123293rootlocalhost testDB 0 Sleep123297rootlocalhost testDB 0 Sleep123404rootlocalhost testDB 0 Query show full processlist123302rootlocalhost 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;}