2009-03-16 30 views

Trả lời

607

Đối với những người may mắn có MySQL> = 5.1.12, bạn có thể kiểm soát tùy chọn này trên toàn cầu trong thời gian chạy:

  1. Execute SET GLOBAL log_output = 'TABLE';
  2. Execute SET GLOBAL general_log = 'ON';
  3. Hãy nhìn vào bảng mysql.general_log

Nếu bạn muốn đầu ra vào một tập tin thay vì một bảng:

  1. SET GLOBAL log_output = "FILE";mặc định.
  2. SET GLOBAL general_log_file = "/path/to/your/logfile.log";
  3. SET GLOBAL general_log = 'ON';

tôi thích phương pháp này để chỉnh sửa file .cnf vì:

  1. bạn không chỉnh sửa các tập tin my.cnf và có khả năng vĩnh viễn quay về khai thác gỗ
  2. bạn' không đánh bắt cá xung quanh hệ thống tập tin tìm kiếm nhật ký truy vấn - hoặc thậm chí tệ hơn, bị phân tâm bởi sự cần thiết cho đích đến hoàn hảo. /var/log /var/data/log/opt /home/mysql_savior/var
  3. khởi động lại máy chủ để lại cho bạn nơi bạn bắt đầu (log là theo mặc định vẫn off)
  4. Bạn không cần phải khởi động lại máy chủ và ngắt kết nối bất kỳ hiện tại với nó.

Để biết thêm thông tin, xem MySQL 5.1 Reference Manual - Server System Variables - general_log

+4

Thiết kế giao diện người dùng tuyệt vời. Dù sao, bảng nhật ký MySQL thực sự đang sử dụng công cụ CSV để bạn có thể làm tất cả những gì mà FlipMcF đã nói trong câu trả lời về việc cho phép đăng nhập vào bảng general_log và có đuôi của general_log như sau: tail -f/var/lib/mysql/mysql /general_log.CSV –

+1

damn it, mysql doc cho điều này thậm chí không bắn tham số bảng. cảm ơn rất nhiều. – Vangel

+0

@Vangel, xem [tại đây] (http://dev.mysql.com/doc/refman/5.1/en/server-system-variables.html#sysvar_log_output). Nó ở đó. Nhưng có, nó là bực bội để không nhìn thấy nó cho [phiên bản 5.5] (http://dev.mysql.com/doc/refman/5.5/en/query-log.html), mặc dù nó được hiển thị cho [phiên bản 5.1 ] (http://dev.mysql.com/doc/refman/5.1/en/query-log.html). –

38

Bạn có thể bật general query log cho loại chẩn đoán đó. Nói chung, bạn không đăng nhập tất cả các truy vấn SELECT trên một máy chủ sản xuất mặc dù, đó là một kẻ giết người hiệu suất.

Chỉnh sửa cấu hình MySQL của bạn, ví dụ: /etc/mysql/my.cnf - tìm kiếm, hoặc thêm, một dòng như mysql

[mysqld] 
log = /var/log/mysql/mysql.log 

Restart này để nhận sự thay đổi đó, bây giờ bạn có thể

tail -f /var/log/mysql/mysql.log 

Hey mau, bạn có thể xem . các truy vấn khi họ đi vào

+4

general_log_file và general_log trong my.cnf –

+0

Điều này đang hoạt động nếu bạn muốn biết khởi động lại mysql http: // askubuntu.com/questions/82374/how-do-i-start-stop-mysql-server –

+1

Phiên bản mới hơn của Mac OS X (ít nhất là trên Mac OS X) yêu cầu các tùy chọn general_log_file và general_log thay vì chỉ "log =". Nếu không, bạn nhận được một lỗi như thế này: ERROR/usr/local/mysql/bin/mysqld: tùy chọn mơ hồ '--log =/tmp/mysql_queries.log' (log-bin, log_slave_updates) –

2

Bạn có thể ghé qua sau trong linux

cd /root 

ls -al 

vi .mysql_history Nó có thể giúp

+5

Điều này có vẻ như nó chỉ hoạt động đối với ứng dụng khách dòng lệnh mysql chính thức và chỉ cho các truy vấn được thực hiện bởi người dùng root – golimar

+0

Câu hỏi nói 'tất cả máy chủ' làm cho câu trả lời này không chính xác. Điều này sẽ hiển thị tất cả các truy vấn được thực hiện bởi một khách hàng duy nhất. – FlipMcF

+0

Nếu mysql binlog được bật, bạn có thể kiểm tra các lệnh do người dùng chạy bằng cách thực hiện lệnh sau trong bảng điều khiển linux bằng cách duyệt tới thư mục mysql binlog mysqlbinlog binlog.000001> /tmp/statements.sql bật [mysqld] log =/var /log/mysql/mysql.log hoặc nhật ký gen sẽ có ảnh hưởng đến hiệu suất của mysql –

3

Nếu mysql binlog được kích hoạt, bạn có thể kiểm tra các lệnh được chạy bởi người dùng bằng cách thực hiện lệnh sau trong điều khoản linux ole bằng cách duyệt tới mysql thư mục binlog

mysqlbinlog binlog.000001 > /tmp/statements.sql 

phép

[mysqld] 
log = /var/log/mysql/mysql.log 

hoặc nhật ký chung, sẽ có ảnh hưởng đến hiệu suất của mysql

+0

có thể, nhưng đau đớn. hữu ích hơn nếu bạn đang tìm kiếm để xem những gì đã xảy ra trong quá khứ. – pdwalker

12

Bạn có thể làm điều chảy cho nhật ký truy vấn giám sát mysql .

mở mysql tập tin cấu hình my.cnf

sudo nano /etc/mysql/my.cnf 

Tìm dòng sau dưới một tiêu đề [mysqld] và bỏ ghi chú những dòng này để cho phép đăng nhập

general_log_file  = /var/log/mysql/mysql.log 
general_log    = 1 

Khởi động lại máy chủ mysql của bạn cho phản ánh những thay đổi

sudo service mysql start 

Theo dõi nhật ký máy chủ mysql bằng dấu phẩy sau nd trong terminal

tail -f /var/log/mysql/mysql.log 
9
SELECT * FROM mysql.general_log WHERE command_type ='Query' LIMIT total; 
3

1) Nếu chung mysql logging được kích hoạt thì chúng ta có thể kiểm tra các truy vấn trong file log hoặc bảng dựa những gì chúng tôi đã đề cập trong config. Kiểm tra những gì được kích hoạt với lệnh sau đây

mysql> show variables like 'general_log%'; 
mysql> show variables like 'log_output%'; 

Nếu chúng ta cần truy vấn lịch sử trong bảng sau đó

Execute SET GLOBAL log_output = 'TABLE'; 
Execute SET GLOBAL general_log = 'ON'; 

Hãy nhìn vào bảng mysql.general_log

Nếu bạn muốn đầu ra một tệp:

SET GLOBAL log_output = "FILE"; which is set by default. 
SET GLOBAL general_log_file = "/path/to/your/logfile.log"; 
SET GLOBAL general_log = 'ON'; 

2) Chúng tôi cũng có thể kiểm tra các truy vấn trong tệp .mysql_history cat ~/.mysql_history

Các vấn đề liên quan