strace
Cách nhanh nhất để xem các truy vấn MySQL / MariaDB trực tiếp là sử dụng trình gỡ lỗi. Trên Linux, bạn có thể sử dụng strace
, ví dụ:
sudo strace -e trace=read,write -s 2000 -fp $(pgrep -nf mysql) 2>&1
Vì có rất nhiều ký tự thoát, bạn có thể định dạng đầu ra của strace bằng đường ống (chỉ cần thêm |
giữa hai lớp lót này) ở trên vào lệnh sau:
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"
Vì vậy, bạn sẽ thấy các truy vấn SQL khá sạch sẽ mà không cần thời gian, mà không cần chạm vào các tệp cấu hình.
Rõ ràng điều này sẽ không thay thế cách kích hoạt nhật ký tiêu chuẩn, được mô tả bên dưới (liên quan đến việc tải lại máy chủ SQL).
dtrace
Sử dụng các đầu dò MySQL để xem các truy vấn MySQL trực tiếp mà không cần chạm vào máy chủ. Kịch bản ví dụ:
#!/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));
}
Lưu tập lệnh trên vào một tệp (như watch.d
) và chạy:
pfexec dtrace -s watch.d -p $(pgrep -x mysqld)
Tìm hiểu thêm: Bắt đầu với DTracing MySQL
Gibbs MySQL Spylass
Xem câu trả lời này .
Nhật ký
Dưới đây là các bước hữu ích cho đề xuất phát triển.
Thêm những dòng này vào ~/.my.cnf
hoặc toàn cầu của bạn my.cnf
:
[mysqld]
general_log=1
general_log_file=/tmp/mysqld.log
Đường dẫn: /var/log/mysqld.log
hoặc /usr/local/var/log/mysqld.log
cũng có thể hoạt động tùy thuộc vào quyền truy cập tệp của bạn.
sau đó khởi động lại MySQL / MariaDB của bạn bằng (tiền tố với sudo
nếu cần):
killall -HUP mysqld
Sau đó kiểm tra nhật ký của bạn:
tail -f /tmp/mysqld.log
Sau khi kết thúc, thay đổi general_log
thành 0
(để bạn có thể sử dụng nó trong tương lai), sau đó xóa tệp và khởi động lại máy chủ SQL : killall -HUP mysqld
.