Tôi đang cố gắng kích hoạt ghi nhật ký truy vấn chậm trên máy chủ của chúng tôi để xác định bất kỳ truy vấn nào có thể sử dụng tối ưu hóa. Âm thanh đủ đơn giản, tuy nhiên tập tin của tôi không được ghi vào. Tôi không có lỗi hay bất cứ điều gì tương tự, có vẻ như nó không đăng nhập các truy vấn chậm. Tôi đã nhớ khởi động lại mysql sau khi cấu hình của tôi thay đổi.
Tôi đang sử dụng MySQL Ver 5.1.61. Đây là những gì tôi có trong my.cnf:
slow-query-log=1
slow-query-log-file=/var/logs/my.slow.log
long_query_time=1
tệp /var/logs/my.slow.log có mysql là chủ sở hữu, cũng vì lợi ích của việc gỡ lỗi mà tôi đã đọc / ghi cho tất cả trên tệp nhật ký.
Tôi có long_query_time được đặt thành 1 ở trên vì tôi chỉ muốn xem nó có hoạt động không. Tôi đã cố gắng đặt nó thấp hơn (ví dụ 0,3) nhưng tôi vẫn không nhận được bất cứ điều gì được ghi lại. Tôi biết rằng các truy vấn mà ứng dụng của tôi đang chạy mất hơn 1 giây và tôi cũng đã chạy các truy vấn đăng nhập ( SELECT sleep(10);
) có chủ ý trong thiết bị đầu cuối để kiểm tra và nhật ký vẫn trống.
Tôi đã xem qua các tài liệu, từ những gì tôi có thể thấy điều này sẽ hoạt động. Bất cứ ai có bất kỳ đề nghị như những gì tôi đang làm sai? Bất kỳ lời khuyên sẽ được đánh giá cao, cảm ơn nhiều!
Chỉnh sửa: Khi được hỏi trong các bình luận, tôi đã chạy truy vấn:
`SELECT variable_value FROM information_schema.global_variables WHERE variable_name IN ('slow_query_log','slow_query_log_file','long_query_time');`
Kết quả:
10.0000000
/var/run/mysqld/mysqld-slow.log
OFF
Rõ ràng những thay đổi cấu hình của tôi không được tính đến vì tôi tin rằng đây là những mặc định. Tôi khá chắc chắn rằng tập tin my.cnf tôi đang thay đổi đang được phân tích cú pháp như thể tôi đặt một giá trị không hợp lệ mysql sẽ lỗi khi khởi động lại. Điều gì có thể xảy ra ở đây?
Chỉnh sửa khác:
Sau khi nhận lời khuyên của @RolandoMySQLDBA và chuyển các dòng cấu hình truy vấn chậm của tôi sang dưới [mysqld]
cài đặt của tôi dường như đang lưu. Bây giờ kết quả của truy vấn biến_value ở trên là:
1.0000000
/var/logs/my.slow.log
ON
Tuy nhiên tôi vẫn không thấy tệp my.slow.log được ghi vào. Tôi không nghĩ đó là vấn đề về quyền vì tệp được sở hữu bởi mysql và tôi đã thêm tất cả các quyền cho tất cả người dùng trên tệp. Bất cứ ai cũng có thể nghĩ ra một lý do tại sao điều này sẽ không hoạt động?
Chỉnh sửa: Đã giải quyết! Đường dẫn đến nhật ký truy vấn chậm là không chính xác, nó phải là /var/log/my.slow.log thay vì / var / log * s * / my.slow.log. Cảm ơn tất cả sự giúp đỡ, tôi đã học được sự phân bổ!
SET GLOBAL log_output=FILE
sửa nó cho tôi
SELECT variable_value FROM information_schema.global_variables WHERE variable_name IN ('slow_query_log','slow_query_log_file','long_query_time');
và gửi đầu ra của nó.