strace
Il modo più rapido per visualizzare le query live di MySQL / MariaDB è utilizzare il debugger. Su Linux puoi usare strace
, ad esempio:
sudo strace -e trace=read,write -s 2000 -fp $(pgrep -nf mysql) 2>&1
Dato che ci sono molti caratteri di escape, è possibile che il formato di output di strace per tubazioni (basta aggiungere |
tra queste due battute) sopra nel seguente comando:
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"
Quindi dovresti vedere query SQL abbastanza pulite senza tempo, senza toccare i file di configurazione.
Ovviamente questo non sostituirà il modo standard di abilitare i log, che è descritto di seguito (che comporta il ricaricamento del server SQL).
dtrace
Utilizzare le sonde MySQL per visualizzare le query MySQL live senza toccare il server. Script di esempio:
#!/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));
}
Salvare lo script sopra in un file (come watch.d
) ed eseguire:
pfexec dtrace -s watch.d -p $(pgrep -x mysqld)
Ulteriori informazioni: Introduzione a DTracing MySQL
Gibbs MySQL Spyglass
Vedere questo risposta .
logs
Ecco i passaggi utili per le proposte di sviluppo.
Aggiungi queste righe al tuo ~/.my.cnf
o globale my.cnf
:
[mysqld]
general_log=1
general_log_file=/tmp/mysqld.log
Percorsi: /var/log/mysqld.log
o /usr/local/var/log/mysqld.log
può anche funzionare a seconda delle autorizzazioni del file.
quindi riavvia MySQL / MariaDB (prefisso con sudo
se necessario):
killall -HUP mysqld
Quindi controlla i tuoi registri:
tail -f /tmp/mysqld.log
Dopo che il rivestimento, il cambiamento general_log
di 0
(in modo da poter utilizzare in futuro), quindi rimuovere il file e riavviare il server SQL di nuovo: killall -HUP mysqld
.