Мониторинг запросов 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-хакер.
Вы также можете использовать лог медленных запросов, но предложенный мной способ лучше подходит для поиска узких мест. Лог медленных запросов не показывает причину “замедленности” запроса, запись попадет в него уже после завершения запроса.
Оригинал:
20.11.07 | *NIX, MySQL articles |
mandriva 2008.1, mysql 5.0.51a
script shows some info but no queries