| Временное ведение лога всех запросов к 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 | 
| | 1.1, XoRe (ok), 10:10, 30/01/2009  [ответить] | +/– |  | Кто подскажет, чем можно помочь в случае соединения к mysql через unix сокет (.../mysql.sock) ? 
 |  |  | 
 
 | 1.4, Toxa (??), 22:57, 30/01/2009  [ответить] | +/– |  | А зачем на лыжах и в гамаке? tcpdump -n -i $if -s 0 -w - port 3306 and dst $ip | strings 
 |  |  | 
 
|  | |  | | 3.7, Toxa (??), 02:15, 31/01/2009 [^] [^^] [^^^] [ответить] | +/– |  | А-а-а-а, ну, тоже дело. Кстати, очень понравилось удаление "неинформативных" commit и rollback, с оставлением begin :-)  
 |  |  | 
 |  | | 4.10, zerg (??), 16:54, 03/02/2009 [^] [^^] [^^^] [ответить] | +/– |  | э-э-э... ключик "-v" у грепа -- енто ж с точностью до наоборот, как раз коммиты и роллбэки БУДУТ присутствовать в логе, в отличие от бегинов. ;-) 
 |  |  | 
 | 
 | 
 | 
 
 
|  | | 2.9, uldus (ok), 21:33, 02/02/2009 [^] [^^] [^^^] [ответить] | +/– |  | >а чем плохо "log = /var/log/MySQL.log"? Не подходит для включения лога на время, так как требует перезапуска mysqld, а постоянно держать - лишняя нагрузка, при сотне запросов в секунду лог растет как на дрожжах.
 |  |  | 
 | 
 
 
 |