URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 48746
[ Назад ]

Исходное сообщение
"Раздел полезных советов: Временное ведение лога всех запросов к MySQL"

Отправлено auto_tips , 30-Янв-09 10:10 
Использование опций конфигурации log-slow-queries и general_log, позволяющих вести полный лог
медленных или всех запросов, требует перезапуска mysql для включения или выключения ведения логов,
что неудобно в ситуации, когда нужно проанализировать запросы только в текущий момент.
Для анализа запросов (не через локальный сокет) на лету можно воспользоваться сетевым сниффером.

Перехватываем и записываем срез трафика MySQL в файл:

   tcpdump -i eth0 port 3306 -s 1500 -w tcpdump.out

Выделяем из дампа SQL запросы, используя утилиту tshark из комплекта сниффера Wireshark (http://www.wireshark.org/):

   tshark -r tcpdump.out -d tcp.port==3306,mysql -T fields -e mysql.query > query_log.out

Удаляем из полученного лога пустые и неинформативные строки:

   cat query_log.out | grep -vE "^(commit.*|autocommit.*|rollback.*|)$" | awk '{print $0 ";"}' > query_log_no_blank.out

Полученный лог удобно анализировать утилитой mysqlsla (http://hackmysql.com/mysqlsla)

URL: http://www.bigdbahead.com/?p=99
Обсуждается: https://www.opennet.ru/tips/info/1921.shtml


Содержание

Сообщения в этом обсуждении
"Временное ведение лога всех запросов к MySQL"
Отправлено XoRe , 30-Янв-09 10:10 
Кто подскажет, чем можно помочь в случае соединения к mysql через unix сокет (.../mysql.sock) ?

"Временное ведение лога всех запросов к MySQL"
Отправлено ymkin , 30-Янв-09 11:27 
включить и смотреть "binary log"

"Временное ведение лога всех запросов к MySQL"
Отправлено Doktor , 30-Янв-09 23:28 
Он только для запросов изменяющих данные.

"Временное ведение лога всех запросов к MySQL"
Отправлено Toxa , 30-Янв-09 22:57 
А зачем на лыжах и в гамаке?

tcpdump -n -i $if -s 0 -w - port 3306 and dst $ip | strings


"Временное ведение лога всех запросов к MySQL"
Отправлено Дмитрий , 31-Янв-09 01:56 
Зато они прорекламировали два снифера и одну утилиту :)

"Временное ведение лога всех запросов к MySQL"
Отправлено Toxa , 31-Янв-09 02:15 
А-а-а-а, ну, тоже дело.

Кстати, очень понравилось удаление "неинформативных" commit и rollback, с оставлением begin :-)  


"Временное ведение лога всех запросов к MySQL"
Отправлено zerg , 03-Фев-09 16:54 
э-э-э... ключик "-v" у грепа -- енто ж с точностью до наоборот, как раз коммиты и роллбэки БУДУТ присутствовать в логе, в отличие от бегинов. ;-)

"Временное ведение лога всех запросов к MySQL"
Отправлено Гзкр , 02-Фев-09 18:36 
а чем плохо "log = /var/log/MySQL.log"? как описано тут http://michurin.com.ru/mysql-log.shtml

"Временное ведение лога всех запросов к MySQL"
Отправлено uldus , 02-Фев-09 21:33 
>а чем плохо "log = /var/log/MySQL.log"?

Не подходит для включения лога на время, так как требует перезапуска mysqld, а постоянно держать - лишняя нагрузка, при сотне запросов в секунду лог растет как на дрожжах.