strace
Самый быстрый способ увидеть живые запросы MySQL / MariaDB - использовать отладчик. В Linux вы можете использовать strace
, например:
sudo strace -e trace=read,write -s 2000 -fp $(pgrep -nf mysql) 2>&1
Поскольку существует много экранированных символов, вы можете отформатировать вывод strace, добавив по конвейеру (просто добавив |
между этими двумя однострочными) выше, следующую команду:
grep --line-buffered -o '".\+[^"]"' | grep --line-buffered -o '[^"]*[^"]' | while read -r line; do printf "%b" $line; done | tr "\r\n" "\275\276" | tr -d "[:cntrl:]" | tr "\275\276" "\r\n"
Таким образом, вы должны видеть довольно чистые запросы SQL без времени, не касаясь файлов конфигурации.
Очевидно, это не заменит стандартный способ включения журналов, который описан ниже (который включает в себя перезагрузку сервера SQL).
dtrace
Используйте пробники MySQL для просмотра запросов MySQL в реальном времени, не касаясь сервера. Пример скрипта:
#!/usr/sbin/dtrace -q
pid$target::*mysql_parse*:entry /* This probe is fired when the execution enters mysql_parse */
{
printf("Query: %s\n", copyinstr(arg1));
}
Сохраните приведенный выше скрипт в файл (вроде watch.d
) и запустите:
pfexec dtrace -s watch.d -p $(pgrep -x mysqld)
Узнайте больше: Начало работы с DTracing MySQL
Гиббс MySQL Spyglass
Смотрите этот ответ .
бревна
Вот шаги, полезные для разработки предложений.
Добавьте эти строки в свой ~/.my.cnf
или глобальный my.cnf
:
[mysqld]
general_log=1
general_log_file=/tmp/mysqld.log
Пути: /var/log/mysqld.log
или /usr/local/var/log/mysqld.log
могут также работать в зависимости от ваших прав доступа к файлу.
затем перезапустите MySQL / MariaDB с помощью (префикса sudo
при необходимости):
killall -HUP mysqld
Затем проверьте ваши журналы:
tail -f /tmp/mysqld.log
После завершения, изменения general_log
в 0
(так что вы можете использовать его в будущем), а затем удалите файл и перезапустите SQL сервер снова: killall -HUP mysqld
.