quarta-feira, 16 de janeiro de 2013

Cheque seu servidor Mysql com Mytop

Uma forma de verificar como está seu servidor Mysql neste momento é usando o Mytop. Ele é semelhanto ao top, comando muito conhecido por quem administra um equipamento Linux. Seu uso é bem simples. Basta digitar:

$ mytop -u ricardo -h 172.20.1.62 -p senha

onde:

  • -u = usuário
  • -h = endereço do servidor
  • -p = senha.

Uma tela semelhante a esta é exibida.

MySQL on 172.20.1.62 (5.1.49-3)                         up 7+06:11:39 [16:16:24]
 Queries: 25.0    qps:    0 Slow:     0.0         Se/In/Up/De(%):    117458732/00/00/00
              qps now:    1 Slow qps: 0.0  Threads:    8 (   8/   4) 6350/00/00/00
 Key Efficiency: 100.0%  Bps in/out:   0.0/  0.2   Now in/out:  14.4/ 4.7k

        Id      User         Host/IP         DB      Time    Cmd Query or State                                          
        --      ----         -------         --      ----    --- --------------                                          
    922650 ricardool      fpawks0703                    0  Query show full processlist                                  
    922703  frontend    site    adm         1  Query SELECT a.id AS a__id, a.asset_type_id AS a__asset_type_id
    922704  frontend    site    adm         1  Query SELECT a.id AS a__id, a.asset_type_id AS a__asset_type_id
    922708  frontend    site    adm         1  Query SELECT a.id AS a__id, a.asset_type_id AS a__asset_type_id
    922713  frontend    site    adm         1  Query SELECT a.id AS a__id, a.asset_type_id AS a__asset_type_id
    922716  frontend    site    adm         1  Query SELECT a.id AS a__id, a.asset_type_id AS a__asset_type_id
    922731  frontend    site    adm         1  Query SELECT a.id AS a__id, a.asset_type_id AS a__asset_type_id
    922732  frontend    site    adm         1  Query SELECT a.id AS a__id, a.asset_type_id AS a__asset_type_id
         2 system us                                 5 Connec Has read all relay log; waiting for the slave I/O thread
         1 system us                                 627099 Connec Waiting for master to send event      

Podemos notar que temos 25 queries rodando, sendo a maioria do usuário frontend através da máquina astolfo. Digitando -f conseguimos ver o comando que está sendo executado.

Thread 922784 was executing following query:

SELECT s.id AS s__id, s.channel_id AS s__channel_id, s.program_id AS s__program_id, s.type AS s__type, s.title AS s__title, s.description AS s__description, s.description_short AS s__description_short, s.image AS s__image, s.tv_rating AS s__tv_rating, s.tv_category AS s__tv_category, s.image_source AS s__image_source, s.date_start AS s__date_start, s.date_end AS s__date_end, s.is_active AS s__is_active, s.is_important AS s__is_important, s.is_live AS s__is_live, s.is_geoblocked AS s__is_geoblocked, s.url AS s__url, s.created_at AS s__created_at, s.updated_at AS s__updated_at FROM schedule s WHERE (s.channel_id = '3' AND s.is_important = 1 AND s.date_start >= '2013-01-14 16:16:44') ORDER BY s.date_start LIMIT 1

-- paused. press any key to resume or (e) to explain --

Com isso é possível verificar quais comandos sql estão demorando mais. Isso pode ser muito útil para fazer uma configuração mais fina do bando de dados, melhorando scripts e sequências sql, criação de índices e visões, etc. Também pode ser usado para criar scripts de monitoramento para gerar alerta em ferramentas como Nagios e Zabbix.

O Mytop está disponível nos repositórios das principais distribuições Lionux, e nas derivadas do Debian pode ser instalada através do comando apt-get install mytop.