Временное ведение лога всех запросов к MySQL |
[исправить] |
Использование опций конфигурации 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)
|
|
|
|
Раздел: Корень / Программисту и web-разработчику / SQL и базы данных / MySQL специфика / Оптимизация и администрирование MySQL |