Làm cách nào để kích hoạt nhật ký truy vấn chậm của MySQL mà không cần khởi động lại MySQL?


88

Tôi đã làm theo hướng dẫn tại đây: http://crazytoon.com/2007/07/23/mysql-changed-runtime-variables-with-out-restart-mysql-server/ nhưng điều đó dường như chỉ đặt ngưỡng.

Tôi có cần làm bất cứ điều gì khác như đặt đường dẫn tệp không?

Theo tài liệu của MySQL

Nếu không có giá trị tên tệp nào được cung cấp cho --log-slow-queries, thì tên mặc định là 
host_name-slow.log. Máy chủ tạo tệp trong thư mục dữ liệu trừ khi
một tên đường dẫn tuyệt đối được đưa ra để chỉ định một thư mục khác. 

Đang chạy

HIỂN THỊ BIẾN

không chỉ ra bất kỳ đường dẫn tệp nhật ký nào và tôi không thấy bất kỳ tệp nhật ký truy vấn chậm nào trên máy chủ của mình ...

BIÊN TẬP

Có vẻ như tôi đang sử dụng phiên bản máy chủ 5.0.77, vì vậy tôi cần thực hiện:

SET TOÀN CẦU log_slow_queries = 1;

nhưng tôi nhận được: ERROR 1238 (HY000): Biến 'log_slow_queries' là một biến chỉ đọc

Tôi giả sử rằng tôi sẽ cần khởi động lại máy chủ và đặt log_slow_queries trong cấu hình của mình?


5
Tại sao bạn không thử nghiệm điều đó trên hộp phát triển?
Martin

Câu trả lời:


93

Hãy thử SET GLOBAL slow_query_log = 'ON';và có lẽFLUSH LOGS;

Điều này giả sử bạn đang sử dụng MySQL 5.1 trở lên. Nếu bạn đang sử dụng phiên bản cũ hơn, bạn cần khởi động lại máy chủ. Điều này được ghi lại trong MySQL Manual . Bạn có thể cấu hình nhật ký trong tệp cấu hình hoặc trên dòng lệnh.


8
FLUSH SLOW LOGS có sẵn trong 5.5!
Carson Reinke

Cũng làm việc cho tôi trên 10.0.36-MariaDB. SET GLOBAL slow_query_log = 'OFF';cũng hoạt động như mong đợi. FLUSH LOGSkhông cần thiết trong cả hai trường hợp.
rinogo

28

Đối với các truy vấn chậm trên phiên bản <5.1, cấu hình sau phù hợp với tôi:

log_slow_queries=/var/log/mysql/slow-query.log
long_query_time=20
log_queries_not_using_indexes=YES

Cũng lưu ý đặt nó dưới [mysqld]một phần của tệp cấu hình và khởi động lại mysqld.


2
Đó là log_slow_queries chứ không phải log-chậm-truy vấn
naomi

6
Thêm vào đó, bạn phải tạo tệp nhật ký theo cách thủ công trước:sudo mkdir /var/log/mysql sudo touch /var/log/mysql/slow-query.log sudo chown -R _mysql /var/log/mysql/
Charles

1
log_slow_queriesđã không được chấp nhận trong MySQL 5.1.29 bởi slow-query-log. Các MySQL Manual 5.1 Reference có thêm chi tiết.
Xeoncross

18

Tìm nhật ký được bật hay không?

SHOW VARIABLES LIKE '%log%';

Đặt nhật ký: -

SET GLOBAL general_log = 'ON'; 

SET GLOBAL slow_query_log = 'ON'; 


6

Những công việc

SET GLOBAL LOG_SLOW_TIME = 1;
SET GLOBAL LOG_QUERIES_NOT_USING_INDEXES = ON;

Bị hỏng trên thiết lập của tôi 5.1.42

SET GLOBAL LOG_SLOW_QUERIES = ON;
SET GLOBAL SLOW_QUERY_LOG = ON;
set @@global.log_slow_queries=1;

http://bugs.mysql.com/bug.php?id=32565

Có vẻ như cách tốt nhất để làm điều này là đặt log_slow_time rất cao, do đó "tắt" nhật ký truy vấn chậm. Hạ log_slow_time để kích hoạt nó. Sử dụng thủ thuật tương tự (đặt thành TẮT) cho log_queries_not_using_indexes.


5

Tôi nghĩ rằng vấn đề là đảm bảo rằng máy chủ MySQL có quyền đối với tệp và có thể chỉnh sửa nó.

Nếu bạn có thể làm cho nó có quyền truy cập vào tệp, thì bạn có thể thử cài đặt:
SET GLOBAL slow_query_log = 1;

Nếu không, bạn luôn có thể 'tải lại' máy chủ sau khi thay đổi tệp cấu hình. Trên linux nó thường/etc/init.d/mysql reload


Tôi nhận được: ERROR 1193 (HY000): Biến hệ thống không xác định 'slow_query_log'
mmattax Ngày

Bạn đang chạy phiên bản MySQL nào?
Ian Gregory

3

Nếu bạn muốn bật nhật ký lỗi chung và ghi lỗi truy vấn chậm trong bảng thay vì tệp

Để bắt đầu đăng nhập bảng thay vì tệp:

set global log_output = “TABLE”;

Để bật nhật ký truy vấn chung và chậm:

set global general_log = 1;
set global slow_query_log = 1;

Để xem nhật ký:

select * from mysql.slow_log;
select * from mysql.general_log;

Để biết thêm chi tiết, hãy truy cập liên kết này

http://easysolutionweb.com/technology/mysql-server-logs/


1

Điều này sẽ hoạt động trên mysql> 5.5

HIỂN THỊ BIẾN NHƯ '% long%';

SET TOÀN CẦU long_query_time = 1;

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.