Мониторинг запросов MySQL при помощи bash-скрипта

Мониторинг запросов MySQL - это любимое времяпровождение администраторов, особенно в процессе тюнинга для увеличения производительности. Я хочу представить вам небольшой bash-скрипт для мониторинга запросов в релаьном времени. Скрипт использует команду “SHOW PROCESSLIST”. Вся прелесть этого сценария заключается в том, что с его помощью вы сможете логировать все запросы и провести анализ логов позже.

#!/bin/bash
while [ 1 ]
do
mysql -N -u root -p password -e ’show processlist’ |grep -v ’show processlist’
sleep 2
done

Примечание: Замените password на ваш пароль.
Примечание: -N убирает заголовки полей

Скрипт не показывает сам вывод команды SHOW PROCESSLIST. Вы также можете исключить из вывода спящие процессы, модифицировав сценарий следующим образом:

mysql -N -u root -ppassword -e ’show processlist’ |egrep -v ‘Sleep|show processlist’

Этот скрипт далеко не идеален, и уж тем более, не “одинок”. Существует мощная утилита mtop, с бОльшей функциональностью. Но она написана на perl, а его не слишком люблю :) Вероятно, что именно у меня не получилось заставить ее работать так, как хотелось бы мне. Лично я предпочел ей простое решение на bash, потому что я отнюдь не матерый perl-хакер.

Вы также можете использовать лог медленных запросов, но предложенный мной способ лучше подходит для поиска узких мест. Лог медленных запросов не показывает причину “замедленности” запроса, запись попадет в него уже после завершения запроса.

Оригинал: http://blog.taragana.com/index.php/archive/monitoring-mysql-queries-using-bash-script/


 

Comments: 1

  1. mandriva user September 18th, 2008 at 1:35 pm

    mandriva 2008.1, mysql 5.0.51a
    script shows some info but no queries

Add a Comment

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong>