strace
Cara tercepat untuk melihat permintaan langsung MySQL / MariaDB adalah dengan menggunakan debugger. Di Linux Anda dapat menggunakan strace
, misalnya:
sudo strace -e trace=read,write -s 2000 -fp $(pgrep -nf mysql) 2>&1
Karena ada banyak karakter yang lolos, Anda dapat memformat output strace dengan memipet (cukup tambahkan |
antara dua satu-liner) di atas ke dalam perintah berikut:
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"
Jadi Anda akan melihat pertanyaan SQL yang cukup bersih tanpa waktu, tanpa menyentuh file konfigurasi.
Jelas ini tidak akan menggantikan cara standar untuk mengaktifkan log, yang dijelaskan di bawah ini (yang melibatkan memuat ulang server SQL).
dtrace
Gunakan probe MySQL untuk melihat permintaan langsung MySQL tanpa menyentuh server. Skrip contoh:
#!/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));
}
Simpan skrip di atas ke file (seperti watch.d
), dan jalankan:
pfexec dtrace -s watch.d -p $(pgrep -x mysqld)
Pelajari lebih lanjut: Memulai dengan DTracing MySQL
Gibbs MySQL Spyglass
Lihat jawaban ini .
Log
Berikut adalah langkah-langkah yang berguna untuk proposal pengembangan.
Tambahkan baris ini ke dalam ~/.my.cnf
atau global Anda my.cnf
:
[mysqld]
general_log=1
general_log_file=/tmp/mysqld.log
Jalur: /var/log/mysqld.log
atau /usr/local/var/log/mysqld.log
mungkin juga berfungsi tergantung pada izin file Anda.
kemudian restart MySQL / MariaDB Anda dengan (awalan dengan sudo
jika perlu):
killall -HUP mysqld
Kemudian periksa log Anda:
tail -f /tmp/mysqld.log
Setelah selesai, perubahan general_log
ke 0
(sehingga Anda dapat menggunakannya di masa depan), kemudian hapus file dan me-restart SQL Server lagi: killall -HUP mysqld
.