strace
Najszybszym sposobem na sprawdzenie zapytań MySQL / MariaDB na żywo jest użycie debuggera. W systemie Linux możesz użyć strace
na przykład:
sudo strace -e trace=read,write -s 2000 -fp $(pgrep -nf mysql) 2>&1
Ponieważ istnieje wiele znaków zmiany znaczenia, możesz sformatować dane wyjściowe strace przez potokowanie (wystarczy dodać |
między tymi dwoma liniami) powyżej do następującego polecenia:
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"
Powinieneś więc widzieć dość czyste zapytania SQL bez czasu, bez dotykania plików konfiguracyjnych.
Oczywiście nie zastąpi to standardowego sposobu włączania dzienników, który jest opisany poniżej (co wymaga ponownego ładowania serwera SQL).
dtrace
Użyj sond MySQL do przeglądania zapytań MySQL na żywo bez dotykania serwera. Przykładowy skrypt:
#!/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));
}
Zapisz powyższy skrypt w pliku (jak watch.d
) i uruchom:
pfexec dtrace -s watch.d -p $(pgrep -x mysqld)
Dowiedz się więcej: Rozpoczęcie pracy z DTracing MySQL
Gibbs MySQL Spyglass
Zobacz tę odpowiedź .
Kłody
Oto kroki przydatne przy projektowaniu.
Dodaj te linie do swojego ~/.my.cnf
lub globalnego my.cnf
:
[mysqld]
general_log=1
general_log_file=/tmp/mysqld.log
Ścieżki: /var/log/mysqld.log
lub /usr/local/var/log/mysqld.log
może również działać w zależności od uprawnień do plików.
następnie ponownie uruchom MySQL / MariaDB przez (przedrostek, sudo
jeśli to konieczne):
killall -HUP mysqld
Następnie sprawdź swoje dzienniki:
tail -f /tmp/mysqld.log
Po zakończeniu, zmiany general_log
do 0
(dzięki czemu można go używać w przyszłości), a następnie usunąć plik i restart serwera SQL ponownie: killall -HUP mysqld
.