strace
A maneira mais rápida de ver consultas ao vivo do MySQL / MariaDB é usar o depurador. No Linux, você pode usar strace
, por exemplo:
sudo strace -e trace=read,write -s 2000 -fp $(pgrep -nf mysql) 2>&1
Uma vez que existem muitos caracteres de escape, você pode formatar a saída do strace pela tubulação (basta adicionar |
entre estes dois one-liners) acima para o seguinte 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"
Portanto, você deve ver consultas SQL bastante limpas sem tempo, sem tocar nos arquivos de configuração.
Obviamente, isso não substituirá a maneira padrão de ativar logs, descrita abaixo (que envolve recarregar o servidor SQL).
dtrace
Use os testes do MySQL para visualizar as consultas ao vivo do MySQL sem tocar no servidor. Script de exemplo:
#!/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));
}
Salve o script acima em um arquivo (como watch.d
) e execute:
pfexec dtrace -s watch.d -p $(pgrep -x mysqld)
Saiba mais: Introdução ao MySQL DTracing
Gibbs MySQL Spyglass
Veja esta resposta .
Histórico
Aqui estão as etapas úteis para propostas de desenvolvimento.
Adicione estas linhas ao seu ~/.my.cnf
ou global my.cnf
:
[mysqld]
general_log=1
general_log_file=/tmp/mysqld.log
Caminhos: /var/log/mysqld.log
ou /usr/local/var/log/mysqld.log
também podem funcionar dependendo das suas permissões de arquivo.
então reinicie seu MySQL / MariaDB (prefixo com sudo
se necessário):
killall -HUP mysqld
Em seguida, verifique seus logs:
tail -f /tmp/mysqld.log
Depois de terminar, a mudança general_log
para 0
(assim você pode usá-lo no futuro), em seguida, remover o arquivo e reiniciar o servidor SQL novamente: killall -HUP mysqld
.