2012-07-23 34 views
21

Làm cách nào để bật nhật ký truy vấn chậm trên máy chủ của tôi? Tôi đã bật tính năng này trên máy chủ cục bộ của mình bằng cách thêm log-slow-queries =[path] vào tệp my.ini nhưng không biết cách thêm máy chủ này trên máy chủ của mình. Máy chủ của tôi dựa trên Linux và có phiên bản PHP 5.2.16.Làm cách nào tôi có thể bật nhật ký truy vấn chậm MySQL trên máy chủ của mình?

Trả lời

40

Cho phép đăng nhập truy vấn chậm không có gì để làm với phiên bản PHP. Bạn phải kích hoạt nó trong máy chủ MySQL. Bạn có thể bật theo hai cách

  1. Trong thời gian chạy
  2. Trong máy chủ bắt đầu

Nếu máy chủ của bạn là trên 5.1.6 bạn có thể thiết lập các bản ghi truy vấn chậm trong thời gian chạy của chính nó. Bạn phải thực hiện truy vấn này.

set global log_slow_queries = 1; 
set global slow_query_log_file = <some file name>; 

Hoặc cách khác bạn có thể thiết lập các tùy chọn này trong my.cnf/files tùy chọn my.ini

log_slow_queries = 1; 
slow_query_log_file = <some file name>; 

Trong trường hợp tập tin tùy chọn được thay đổi, các máy chủ MySQL cần phải được khởi động lại.

Vị trí của các tập tin tùy chọn mysql có thể được tìm thấy ở đây http://dev.mysql.com/doc/refman/4.1/en/mysql-config-wizard-file-location.html

FYI: log_slow_queries được loại bỏ trong MySQL 5.6.1 và slow_query_log được sử dụng để thay thế. http://dev.mysql.com/doc/refman/5.6/en/server-options.html#option_mysqld_log-slow-queries

Nhưng để thực hiện, bạn có thể đặt đầu ra nhật ký (tùy chọn log_output) thành TABLE. Ngoài ra bạn có thể có một cái nhìn tùy chọn đăng nhập truy vấn chậm khác như long_query_time, log-queries-not-using-indexes

+1

khi tôi chạy truy vấn này 'SET GLOBAL slow_query_log = 1;' tôi nhận được lỗi này '# 1193 - Biến hệ thống không xác định 'slow_query_log'' – Juice

+1

sry it should' log_slow_queries', tôi sẽ thực hiện chỉnh sửa cần thiết. –

+1

tôi chạy lệnh này cũng 'đặt global log_slow_queries = 1;' bây giờ hiển thị '# 1238 - Biến 'log_slow_queries' là biến chỉ đọc' – Juice

36

Bạn có thể đặt nó tạm thời, bằng cách chạy các lệnh sau:

set global slow_query_log = 1; 
set global slow_query_log_file = '/var/log/mysql-slow.log'; 

nhưng thay đổi của bạn sẽ được hoàn tác khi mysql được khởi động lại.

Bạn có thể đặt nó vĩnh viễn, bằng cách thêm dòng sau vào my.cnf tập tin của bạn:

slow-query-log=1 
slow-query-log-file=/var/log/mysql-slow.log 

Vị trí của my.cnf khác nhau theo từng hệ điều hành, nhưng thường được tìm thấy trong /etc/my.cnf, hoặc /etc/mysql/my.cnf:

Sau khi lưu thay đổi của bạn, bạn sẽ cần phải khởi động lại MySql. Điều này có thể khác nhau tùy theo hệ điều hành, nhưng đây là một số ví dụ phổ biến:

sudo /etc/init.d/mysqld restart 

sudo service mysqld restart 
+0

khi tôi đang chạy truy vấn này ' SET GLOBAL slow_query_log = 1; 'tôi nhận được lỗi này' # 1193 - Un biến hệ thống đã biết 'slow_query_log'' – Juice

+0

thanx 4 ur help .. – Juice

+0

không bị khó chịu. Vì cả hai câu trả lời đều được giúp đỡ đầy đủ cho tôi nên tôi đã bỏ phiếu cho cả hai. Và tôi có thể chấp nhận chỉ có một câu trả lời khác khôn ngoan tôi sẽ chấp nhận của bạn cũng. Tôi đã chấp nhận câu trả lời của mình bởi vì ông đã trả lời những nghi ngờ của tôi. – Juice

12

đầu tiên (như root :)

mkdir /var/log/mysql 
touch /var/log/mysql/log-slow-queries.log 
chown mysql:mysql -R /var/log/mysql 

Sau đó dưới [mysqld] trong/etc/của tôi.conf (hoặc bất cứ nơi nào tập tin cấu hình của bạn là :)

slow_query_log = 1 
log-queries-not-using-indexes 
long_query_time=1 
log-slow-queries=/var/log/mysql/log-slow-queries.log 

Tiếp theo:

service mysql restart 

Cuối cùng:

mysql 
mysql> SELECT SLEEP(10); 
mysql> quit 

Mã xác nhận:

cat /var/log/mysql/log-slow-queries.log 

/usr/sbin/mysqld, Version: 5.5.42-cll (MySQL Community Server (GPL)). started with: 
Tcp port: 0 Unix socket: (null) 
Time     Id Command Argument 
# Time: 150727 0:05:17 
# [email protected]: root[root] @ localhost [] 
# Query_time: 10.000215 Lock_time: 0.000000 Rows_sent: 1 Rows_examined: 0 
SET timestamp=1437973517; 
select sleep(10); 
Các vấn đề liên quan