Hướng dẫn enable slow query log mysql without restart - bật mysql log truy vấn chậm mà không cần khởi động lại

Bạn có thể gỡ lỗi một máy chủ MySQL và muốn bật truy vấn chậm, bạn có thể thực hiện thông qua MySQL CLI. Không cần phải thay đổi tệp

mysql> SET GLOBAL long_query_time = 10;
1 và khởi động lại dịch vụ MySQL của bạn - mặc dù điều đó cũng sẽ hoạt động.

Đăng nhập vào MySQL CLI thông qua

mysql> SET GLOBAL long_query_time = 10;
2.

$ mysql

Đặt vị trí tệp nhật ký cho nhật ký truy vấn chậm. Đảm bảo người dùng

mysql> SET GLOBAL long_query_time = 10;
2 có quyền ghi vào tệp đó.

mysql> SET GLOBAL slow_query_log_file = '/path/to/slow_query.log';

Xác định điều gì tạo ra một truy vấn chậm, bằng cách đặt giới hạn (tính bằng giây) sau đó một truy vấn được ghi vào nhật ký truy vấn chậm. Ví dụ dưới đây ghi lại mọi truy vấn vượt quá 10 giây trong thời gian.

mysql> SET GLOBAL long_query_time = 10;

Bây giờ bật nhật ký truy vấn chậm.

mysql> SET GLOBAL slow_query_log = 'ON';
mysql> FLUSH LOGS;

Như một phần thưởng, bạn cũng có thể thực hiện tất cả các truy vấn không sử dụng các chỉ mục được ghi vào cùng một nhật ký truy vấn chậm.

mysql> SET GLOBAL log_queries_not_using_indexes = 'ON';

Nếu bạn muốn thực hiện những thay đổi này tồn tại, hãy sửa đổi

mysql> SET GLOBAL long_query_time = 10;
1 và thêm các dòng này vào phần
mysql> SET GLOBAL long_query_time = 10;
5 của cấu hình.

[mysqld]
...
slow_query_log = /path/to/slow_query.log
long_query_time = 10
log_queries_not_using_indexes = ON

Điều này cũng sẽ hoạt động cho phiên bản MySQL của Mariadb hoặc Percona.

Để xác minh nếu cài đặt của bạn đang hoạt động, hãy yêu cầu các tham số đang chạy từ MySQL.

mysql> SHOW GLOBAL VARIABLES LIKE 'log_queries_not_using_indexes';
+-------------------------------+-------+
| Variable_name                 | Value |
+-------------------------------+-------+
| log_queries_not_using_indexes | ON    |
+-------------------------------+-------+

mysql> SHOW GLOBAL VARIABLES LIKE 'slow\_%';
+---------------------+-------------------------------+
| Variable_name       | Value                         |
+---------------------+-------------------------------+
| slow_query_log      | ON                            |
| slow_query_log_file | /path/to/slow_query.log       |
+---------------------+-------------------------------+

mysql> SHOW GLOBAL VARIABLES LIKE 'long_query_time';
+-----------------+-----------+
| Variable_name   | Value     |
+-----------------+-----------+
| long_query_time | 10.000000 |
+-----------------+-----------+

Và don không quên vô hiệu hóa nó một lần nữa sau khi lần gỡ lỗi của bạn hoặc cho phép logrotate để ngăn chặn các tệp phát triển quá lớn. Để vô hiệu hóa việc ghi nhật ký, nhưng để lại phần còn lại của các cấu hình được yêu cầu, hãy sử dụng các cấu hình được yêu cầu, hãy sử dụng các cấu hình sau tại CLI.

mysql> SET GLOBAL slow_query_log = 'OFF';
mysql> FLUSH LOGS;

Để vô hiệu hóa nó vĩnh viễn trong tệp

mysql> SET GLOBAL long_query_time = 10;
1, đặt
mysql> SET GLOBAL long_query_time = 10;
7 thành 0.

[mysqld]
...
slow_query_log = 0
long_query_time = 10
log_queries_not_using_indexes = ON

Tôi đã làm theo các hướng dẫn ở đây: http://crazytoon.com/2007/07/23/mysql-changing-runtime-variables-with-o-ra-restarting-mysql-server/nhưng điều đó dường như chỉ đặt ngưỡng.

Tôi có cần phải làm bất cứ điều gì khác như đặt filepath không?

Theo tài liệu của MySQL

If no file_name value is given for --log-slow-queries, the default name is 
host_name-slow.log. The server creates the file in the data directory unless 
an absolute path name is given to specify a different directory. 

Đang chạy

mysql> SET GLOBAL slow_query_log_file = '/path/to/slow_query.log';
0

Không cho biết 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 tôi ...

CHỈNH SỬA

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

mysql> SET GLOBAL slow_query_log_file = '/path/to/slow_query.log';
1

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

Tôi cho 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?

hỏi ngày 8 tháng 3 năm 2010 lúc 18:44Mar 8, 2010 at 18:44

MMATTAXMMATTAXmmattax

26.7K40 Huy hiệu vàng114 Huy hiệu bạc149 Huy hiệu đồng40 gold badges114 silver badges149 bronze badges

2

Thử

mysql> SET GLOBAL long_query_time = 10;
8 và có lẽ
mysql> SET GLOBAL long_query_time = 10;
9

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

Đã trả lời ngày 8 tháng 3 năm 2010 lúc 18:54Mar 8, 2010 at 18:54

Hướng dẫn enable slow query log mysql without restart - bật mysql log truy vấn chậm mà không cần khởi động lại

JonathanjonathanIan Gregory

2.1534 Huy hiệu vàng20 Huy hiệu bạc25 Huy hiệu Đồng1 gold badge28 silver badges42 bronze badges

3

Những công việc này

mysql> SET GLOBAL slow_query_log_file = '/path/to/slow_query.log';
2

mysql> SET GLOBAL slow_query_log_file = '/path/to/slow_query.log';
6

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

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. Log_slow_time thấp hơn để bật nó. Sử dụng cùng một thủ thuật (đặt thành TẮT) cho log_queries_not_using_indexes.4 gold badges40 silver badges71 bronze badges

Đã trả lời ngày 13 tháng 5 năm 2010 lúc 3:11May 24, 2011 at 6:34

1.71624 Huy hiệu bạc37 Huy hiệu đồngNitin

Nếu bạn muốn bật nhật ký lỗi chung và chậm, lỗi truy vấn, hãy đăng nhập vào bảng thay vì tệp3 silver badges2 bronze badges

3

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

mysql> SET GLOBAL slow_query_log_file = '/path/to/slow_query.log';
3

mysql> SET GLOBAL slow_query_log_file = '/path/to/slow_query.log';
8

mysql> SET GLOBAL slow_query_log_file = '/path/to/slow_query.log';
4

Để bật nhật ký truy vấn chung và chậm:Jan 14, 2015 at 11:38

Hướng dẫn enable slow query log mysql without restart - bật mysql log truy vấn chậm mà không cần khởi động lại

Để xem nhật ký:

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

mysql> SET GLOBAL slow_query_log_file = '/path/to/slow_query.log';
5

Đã trả lời ngày 9 tháng 9 năm 2017 lúc 5:39

Đã trả lời ngày 8 tháng 3 năm 2010 lúc 18:59Mar 8, 2010 at 18:59

MartinmartinMartin

9.4945 huy hiệu vàng36 Huy hiệu bạc34 Huy hiệu đồng5 gold badges36 silver badges34 bronze badges

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ể nhận được nó để có quyền truy cập vào tệp, thì bạn có thể thử cài đặt:

mysql> SET GLOBAL slow_query_log = 'ON';
mysql> FLUSH LOGS;
2
mysql> SET GLOBAL slow_query_log = 'ON';
mysql> FLUSH LOGS;
2

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 thường

mysql> SET GLOBAL slow_query_log = 'ON';
mysql> FLUSH LOGS;
3

Đã trả lời ngày 8 tháng 3 năm 2010 lúc 18:54Mar 8, 2010 at 18:54

JonathanjonathanJonathan

2.1534 Huy hiệu vàng20 Huy hiệu bạc25 Huy hiệu Đồng4 gold badges20 silver badges25 bronze badges

2

Những công việc này

mysql> SET GLOBAL slow_query_log_file = '/path/to/slow_query.log';
6

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

mysql> SET GLOBAL slow_query_log_file = '/path/to/slow_query.log';
7

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. Log_slow_time thấp hơn để bật nó. Sử dụng cùng một thủ thuật (đặt thành TẮT) cho log_queries_not_using_indexes.

Đã trả lời ngày 13 tháng 5 năm 2010 lúc 3:11May 13, 2010 at 3:11

Hướng dẫn enable slow query log mysql without restart - bật mysql log truy vấn chậm mà không cần khởi động lại

mikeytown2mikeytown2mikeytown2

1.71624 Huy hiệu bạc37 Huy hiệu đồng24 silver badges37 bronze badges

Nếu bạn muốn bật nhật ký lỗi chung và chậm, lỗi truy vấn, hãy đăng nhập vào bảng thay vì tệp

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

mysql> SET GLOBAL slow_query_log_file = '/path/to/slow_query.log';
8

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

mysql> SET GLOBAL slow_query_log_file = '/path/to/slow_query.log';
9

Để xem nhật ký:

mysql> SET GLOBAL long_query_time = 10;
0

Để 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/

Đã trả lời ngày 9 tháng 9 năm 2017 lúc 5:39Sep 9, 2017 at 5:39

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

Hiển thị các biến như '%dài%';

Đặt toàn cầu long_query_time = 1;

Đã trả lời ngày 21 tháng 2 năm 2016 lúc 22:42Feb 21, 2016 at 22:42

0