mysql监控管理工具–innotop

INNOTOP是一个通过文本模式显示MySQL和InnoDB的监测工具。INNOTOP是用PERL语言写成的,这使它能更加灵活的使用在各种操作平台之上,它能详细的的监控出当前MYSQL和INNODB运行的状态,以DBA根据结果,可以合理的优化MYSQL,让MYSQL更稳定更高效的运行。
 
1.innotop安装
安装INNOTOP工具非常简单,其是由PERL写的,当然需要PERL环境和相关的工具包。在安装之前先要确定你的系统安装了Time::HiRes,Term::ReadKey,DBI,DBD::mysql这四个包

1 cpanm --mirror http://mirrors.sohu.com/CPAN/ --mirror-only DBI DBD::mysql Term::ReadKey Time::HiRes3

参考官网:http://innotop.googlecode.com/svn/html/installing.html

1 wget http://innotop.googlecode.com/files/innotop-1.9.0.tar.gz
2 tar -zxf innotop-1.9.0.tar.gz
3 cd innotop-1.9.0
4 perl Makefile.PL
5 make install
6 #这样就安装完innotop,系统多出一个命令innotop

2.使用方法
参考官网:http://innotop.googlecode.com/svn/html/manual.html
使用方法:
innotop -uroot -p123456

[RO] Dashboard (? for help)                            127.0.0.1, 3h, 0.06 QPS, 2/1/0 con/run/cac thds, 5.5.30-log
Uptime  MaxSQL  ReplLag  Cxns  Lock  QPS   QPS  Run  Run  Tbls  Repl  SQL
    3h                      2     0  0.06                   13  Off
输入“?”得到帮助
Switch to a different mode:
   A  Dashboard         I  InnoDB I/O Info     Q  Query List
   B  InnoDB Buffers    K  InnoDB Lock Waits   R  InnoDB Row Ops
   C  Command Summary   L  Locks               S  Variables & Status
   D  InnoDB Deadlocks  M  Replication Status  T  InnoDB Txns
   F  InnoDB FK Err     O  Open Tables         U  User Statistics
Actions:
   d  Change refresh interval        p  Pause innotop
   k  Kill a query‘s connection      q  Quit innotop
   n  Switch to the next connection  x  Kill a query
Other:
 TAB  Switch to the next server group   /  Quickly filter what you see
   !  Show license and warranty         =  Toggle aggregation
   #  Select/create server groups       @  Select/create server connections
   $  Edit configuration settings       \  Clear quick-filters
Press any key to continue

3.MySQL如何获取当前执行的SQL
innotop的Q模式则可以完美的解决获取当前运行的SQL的问题。innotop -m Q 或者innotop进入后再按shift+q进入Query list模式:

Query List (? for help) mysql01, 75+03:16:16, 774.20 QPS, 83 thd, 5.1.24-rc-log

CXN    When   Load  QPS     Slow  QCacheHit  KCacheHit  BpsIn    BpsOut
my120  Now    0.00  774.20     0     40.22%    100.00%  207.98k    1.46M
my120  Total  0.00  212.69     2     29.70%    100.00%   56.90k  402.15k

CXN     Cmd    ID      User    Host           DB      Time   Query
mysql01   Query   20936  poster  192.168.1.1    poster  00:00  select a.poster_id,
a.pic_id, a.gmt_create, a.gmt_modified, a.url, a.no

然后按e并输入thread ID显示执行计划或者按f显示完整sql语句,或者按o显示系统优化过的语句(需要MySQL的版本支持EXPLAIN EXTENDED)。个人感觉,还是e最有用,其他两个选项,则有点鸡肋了。

Query List (? for help)  mysql01, 75+03:16:16, 774.20 QPS, 83 thd, 5.1.24-rc-log
EXPLAIN PARTITIONS
select a.poster_id, a.pic_id, a.gmt_create, a.gmt_modified, a.url, a.notes,
a.type, a.indexed, a.user_id, a.user_nick, b.pic_path from poster.poster_pic a
inner join poster.picture b on (a.pic_id = b.id) where a.poster_id = 3390
order by a.indexed
______________ Sub-Part 1 ______________  ________ Sub-Part 1 ________
Select Type: SIMPLE                       Select Type: SIMPLE
      Table: a                                  Table: b
 Partitions:                               Partitions:
       Type: ref                                 Type: eq_ref
 Poss. Keys: PRIMARY                       Poss. Keys: PRIMARY
      Index: PRIMARY                            Index: PRIMARY
 Key Length: 4                             Key Length: 8
  Index Ref: const                          Index Ref: poster.a.PIC_ID
  Row Count: 14                             Row Count: 1
    Special: Using where; Using filesort      Special:                

Press e to explain, f for full query, o for optimized query
Query List (? for help)  mysql01, 75+03:16:16, 774.20 QPS, 83 thd, 5.1.24-rc-log
select a.poster_id, a.pic_id, a.gmt_create, a.gmt_modified, a.url, a.notes,
a.type, a.indexed, a.user_id, a.user_nick, b.pic_path from poster.poster_pic a
inner join poster.picture b on (a.pic_id = b.id) where a.poster_id = 3390
order by a.indexed

Press e to explain, f for full query, o for optimized query
Query List (? for help)  mysql01, 75+03:16:16, 774.20 QPS, 83 thd, 5.1.24-rc-log
select a.poster_id, a.pic_id, a.gmt_create, a.gmt_modified, a.url, a.notes,
 a.type, a.indexed, a.user_id, a.user_nick, b.pic_path from poster.poster_pic a
 inner join poster.picture b on (a.pic_id = b.id) where a.poster_id = 3390
order by a.indexed

Note:
select `poster`.`a`.`POSTER_ID` AS `poster_id`,`poster`.`a`.`PIC_ID` AS
`pic_id`,`poster`.`a`.`GMT_CREATE` AS `gmt_create`,`poster`.`a`.`GMT_MODIFIED`
AS `gmt_modified`,`poster`.`a`.`URL` AS `url`,`poster`.`a`.`NOTES` AS
`notes`,`poster`.`a`.`TYPE` AS `type`,`poster`.`a`.`INDEXED` AS
`indexed`,`poster`.`a`.`USER_ID` AS `user_id`,`poster`.`a`.`user_nick` AS
`user_nick`,`poster`.`b`.`PIC_PATH` AS `pic_path`
from `poster`.`poster_pic` `a`  join `poster`.`picture` `b`
 where ((`poster`.`b`.`ID` = `poster`.`a`.`PIC_ID`)
and (`poster`.`a`.`POSTER_ID` = 3390)) order by `poster`.`a`.`INDEXED`

Press e to explain, f for full query, o for optimized query

那么innotop是从哪里取的数据呢?应该是通过information_schema.processlist来获得完整的sql语句,并且根据COMMAND来过滤掉空闲线程的。

mysql> desc information_schema.processlist;
+---------+-------------+------+-----+---------+-------+
| Field   | Type        | Null | Key | Default | Extra |
+---------+-------------+------+-----+---------+-------+
| ID      | bigint(4)   | NO   |     | 0       |       |
| USER    | varchar(16) | NO   |     |         |       |
| HOST    | varchar(64) | NO   |     |         |       |
| DB      | varchar(64) | YES  |     | NULL    |       |
| COMMAND | varchar(16) | NO   |     |         |       |
| TIME    | bigint(7)   | NO   |     | 0       |       |
| STATE   | varchar(64) | YES  |     | NULL    |       |
| INFO    | longtext    | YES  |     | NULL    |       |
+---------+-------------+------+-----+---------+-------+
8 rows in set (0.00 sec)
时间: 2024-08-08 19:27:13

mysql监控管理工具–innotop的相关文章

MySQL Utilities管理工具

1.mysqlrplsync工具. 用来检查主从复制的数据一致性的工具. mysqlrplsync --master=check:pass@192.168.152.157:3310--slaves=check:pass@192.168.152.159:3311,check:pass@192.168.152.160:3312 2.mysqlfailover 工具. 用来监控复制状态并实现故障转移的高可用工具. mysqlfailover --master=failover:[email prote

Mac下Supervisor进程监控管理工具的安装与配置

Supervisor是一个类 unix 操作系统下的进程监控管理工具. Supervisor是由 Python 写成,可用 Python 的包安装管理工具 pip(Python Package Index) 直接安装 代码如下: sudo pip install supervisor 配置 Supervisor Supervisor 的配置文件命名为 supervisord.conf,它为 supervisord(Supervisor 的主服务命令) 和 supervisorctl(Superv

虚拟化监控管理工具如何选择

虚拟化监控与管理工具对服务器整合项目的成功至关重要.然而虚拟化监控与管理工具的功能各不相同.有些工具对性能进行实时监控,其他一些工具提供历史性能数据.有些工具提供历史统计数据以排除误报并能够为性能监控以及诊断性能问题提供帮助.容量管理与分析以及对虚拟基础设施资源的成本进行统计分析是性能监控工具提供的其他功能.虚拟化性能监控管理工具主要从以下三个方面来进行选择1.监控范围广虚拟服务器和实体服务器同时监控多数据中心同步监控不同类型的虚拟化形式同步监控(esxi或kvm)2.监控内容深虚拟资源细致化虚

MySQL可视化管理工具

MySQL GUI工具是一种跨平台的开源程序套件,供开发者对MySQL数据库和数据库服务器进行管理.MySQL GUI是可视化的数据库管理软件,集成了SQL开发.数据库设计.建立和维护的功能,是一个统一的MySQL数据库管理和开发环境. 这篇文章列出了10个最佳的MySQL GUI工具,除了通常使用和了解的phpmyadmin,其实还有很多优秀的MySQL GUI,开发者可以根据需求进行选择. MyDB Studio DBTools Manager dbForge Studio SQLWave

mysql监控报警工具

#!/usr/bin/env python # coding:utf-8 import MySQLdb import requests, json import time url = "http://api.sendcloud.net/apiv2/mail/send" key = {} params = {} #目标用户的邮箱 to_email = {'root': ["[email protected] ", ], 'tianyi': ["[email 

mysql图形管理工具

1.phpMyAdmin (http://www.phpmyadmin.net/) 2.Navicat (http://www.navicat.com/) 3.MySQL GUI Tools (http://dev.mysql.com/downloads/gui-tools/) 4.SQLyog (http://wwwwebyog.com/en/index.php)

Java课程设计---安装Mysql及管理工具

1.安装mysql 没有安装包的可以在这个地址下载:https://dev.mysql.com/downloads/mysql/5.5.html 双击提供的安装包 (安装路径可以不用更改) 在弹出的窗口中 一直next,没有需要修改的地方,直到下图,必须选择UTF-8编码 输入管理员密码:推荐123 自此mysql数据库软件安装完毕 2.navicat使用 解压后即可使用 点击"连接" 确定后即可在左侧看到数据库连接,双击打开即可使用. 原文地址:https://www.cnblogs

MySQL监控、性能分析——工具篇

MySQL越来越被更多企业接受,随着企业发展,MySQL存储数据日益膨胀,MySQL的性能分析.监控预警.容量扩展议题越来越多.“工欲善其 事,必先利其器”,那么我们如何在进行MySQL性能分析.监控预警.容量扩展问题上得到更好的解决方案,就要利用各种工具来对MySQL各种指标进行分 析.本文是读书笔记,下面提及的工具,读者可能都用过,或打算准备是使用.MySQL服务器的发布包没有包含那些能完成许多常见任务的工具,例如监控服务器的工具.比较服务器间数据的工具.我们把这些工具分成以下几类:界面.监

DBA04 - 多表查询 MySQL管理工具、用户授权及撤销

DBA DAY04 一.多表查询 stu_id   name   class   缴费表班级表成绩表就业表1.1 复制表 (作用: 备份表 . 快速建表) mysql>   create  table  表名  sql查询:create database  db4;use  db4; create  table  user2  select  * from db3.user;show  tables;select  * from user2; create  table  user3  sele