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.cnfo globale my.cnf:
[mysqld]
general_log=1
general_log_file=/tmp/mysqld.log
Percorsi: /var/log/mysqld.logo /usr/local/var/log/mysqld.logpuò anche funzionare a seconda delle autorizzazioni del file.
quindi riavvia MySQL / MariaDB (prefisso con sudose necessario):
killall -HUP mysqld
Quindi controlla i tuoi registri:
tail -f /tmp/mysqld.log
Dopo che il rivestimento, il cambiamento general_logdi 0(in modo da poter utilizzare in futuro), quindi rimuovere il file e riavviare il server SQL di nuovo: killall -HUP mysqld.