The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Временное ведение лога всех запросов к 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)
 
29.01.2009 , Источник: http://www.bigdbahead.com/?p=99...
Ключи: mysql, analyze, log, query, sql, tcpdump, sniffer / Лицензия: CC-BY
Раздел:    Корень / Программисту и web-разработчику / SQL и базы данных / MySQL специфика / Оптимизация и администрирование MySQL

Обсуждение [ RSS ]
  • 1.1, XoRe (ok), 10:10, 30/01/2009 [ответить]  
  • +/
    Кто подскажет, чем можно помочь в случае соединения к mysql через unix сокет (.../mysql.sock) ?
     
     
  • 2.2, ymkin (ok), 11:27, 30/01/2009 [^] [^^] [^^^] [ответить]  
  • +/
    включить и смотреть "binary log"
     
     
  • 3.5, Doktor (??), 23:28, 30/01/2009 [^] [^^] [^^^] [ответить]  
  • +/
    Он только для запросов изменяющих данные.
     

  • 1.4, Toxa (??), 22:57, 30/01/2009 [ответить]  
  • +/
    А зачем на лыжах и в гамаке?

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

     
     
  • 2.6, Дмитрий (??), 01:56, 31/01/2009 [^] [^^] [^^^] [ответить]  
  • +/
    Зато они прорекламировали два снифера и одну утилиту :)
     
     
  • 3.7, Toxa (??), 02:15, 31/01/2009 [^] [^^] [^^^] [ответить]  
  • +/
    А-а-а-а, ну, тоже дело.

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

     
     
  • 4.10, zerg (??), 16:54, 03/02/2009 [^] [^^] [^^^] [ответить]  
  • +/
    э-э-э... ключик "-v" у грепа -- енто ж с точностью до наоборот, как раз коммиты и роллбэки БУДУТ присутствовать в логе, в отличие от бегинов. ;-)
     

  • 1.8, Гзкр (?), 18:36, 02/02/2009 [ответить]  
  • +/
    а чем плохо "log = /var/log/MySQL.log"? как описано тут http://michurin.com.ru/mysql-log.shtml
     
     
  • 2.9, uldus (ok), 21:33, 02/02/2009 [^] [^^] [^^^] [ответить]  
  • +/
    >а чем плохо "log = /var/log/MySQL.log"?

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

     


     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру