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
.