Hướng dẫn mysql log all queries - mysql đăng nhập tất cả các truy vấn

Bài viết được sự cho phép của tác giả Nguyễn Hữu Đồng

Đôi khi bạn sẽ cần monitor tất cả các query được gửi tới server trong một khoảng thời gian, mysql cung cấp cho ta vài phương pháp để làm chuyện này, cho phép chúng ta xem log của các query và log của các query chậm. Nếu ta kích hoạt tính năng log query thì những log được tạo sẽ sẽ nằm ở một tront hai chỗ file hoặc 2 bảng 

CREATE TABLE `slow_log` (
   `start_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP 
                          ON UPDATE CURRENT_TIMESTAMP,
   `user_host` mediumtext NOT NULL,
   `query_time` time NOT NULL,
   `lock_time` time NOT NULL,
   `rows_sent` int(11) NOT NULL,
   `rows_examined` int(11) NOT NULL,
   `db` varchar(512) NOT NULL,
   `last_insert_id` int(11) NOT NULL,
   `insert_id` int(11) NOT NULL,
   `server_id` int(10) unsigned NOT NULL,
   `sql_text` mediumtext NOT NULL,
   `thread_id` bigint(21) unsigned NOT NULL
  ) ENGINE=CSV DEFAULT CHARSET=utf8 COMMENT='Slow log'
1 và 
CREATE TABLE `slow_log` (
   `start_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP 
                          ON UPDATE CURRENT_TIMESTAMP,
   `user_host` mediumtext NOT NULL,
   `query_time` time NOT NULL,
   `lock_time` time NOT NULL,
   `rows_sent` int(11) NOT NULL,
   `rows_examined` int(11) NOT NULL,
   `db` varchar(512) NOT NULL,
   `last_insert_id` int(11) NOT NULL,
   `insert_id` int(11) NOT NULL,
   `server_id` int(10) unsigned NOT NULL,
   `sql_text` mediumtext NOT NULL,
   `thread_id` bigint(21) unsigned NOT NULL
  ) ENGINE=CSV DEFAULT CHARSET=utf8 COMMENT='Slow log'
2 của database có tên là 
CREATE TABLE `slow_log` (
   `start_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP 
                          ON UPDATE CURRENT_TIMESTAMP,
   `user_host` mediumtext NOT NULL,
   `query_time` time NOT NULL,
   `lock_time` time NOT NULL,
   `rows_sent` int(11) NOT NULL,
   `rows_examined` int(11) NOT NULL,
   `db` varchar(512) NOT NULL,
   `last_insert_id` int(11) NOT NULL,
   `insert_id` int(11) NOT NULL,
   `server_id` int(10) unsigned NOT NULL,
   `sql_text` mediumtext NOT NULL,
   `thread_id` bigint(21) unsigned NOT NULL
  ) ENGINE=CSV DEFAULT CHARSET=utf8 COMMENT='Slow log'
3.

1. Đầu tiên, kiểm tra nếu database mysql chưa có hai bảng sau slow_log và general_log thì tạo nó.

  • Để tạo bảng 
    CREATE TABLE `slow_log` (
       `start_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP 
                              ON UPDATE CURRENT_TIMESTAMP,
       `user_host` mediumtext NOT NULL,
       `query_time` time NOT NULL,
       `lock_time` time NOT NULL,
       `rows_sent` int(11) NOT NULL,
       `rows_examined` int(11) NOT NULL,
       `db` varchar(512) NOT NULL,
       `last_insert_id` int(11) NOT NULL,
       `insert_id` int(11) NOT NULL,
       `server_id` int(10) unsigned NOT NULL,
       `sql_text` mediumtext NOT NULL,
       `thread_id` bigint(21) unsigned NOT NULL
      ) ENGINE=CSV DEFAULT CHARSET=utf8 COMMENT='Slow log'
    1
CREATE TABLE `general_log` (
   `event_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
                          ON UPDATE CURRENT_TIMESTAMP,
   `user_host` mediumtext NOT NULL,
   `thread_id` bigint(21) unsigned NOT NULL,
   `server_id` int(10) unsigned NOT NULL,
   `command_type` varchar(64) NOT NULL,
   `argument` mediumtext NOT NULL
  ) ENGINE=CSV DEFAULT CHARSET=utf8 COMMENT='General log'

Bảng 

CREATE TABLE `slow_log` (
   `start_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP 
                          ON UPDATE CURRENT_TIMESTAMP,
   `user_host` mediumtext NOT NULL,
   `query_time` time NOT NULL,
   `lock_time` time NOT NULL,
   `rows_sent` int(11) NOT NULL,
   `rows_examined` int(11) NOT NULL,
   `db` varchar(512) NOT NULL,
   `last_insert_id` int(11) NOT NULL,
   `insert_id` int(11) NOT NULL,
   `server_id` int(10) unsigned NOT NULL,
   `sql_text` mediumtext NOT NULL,
   `thread_id` bigint(21) unsigned NOT NULL
  ) ENGINE=CSV DEFAULT CHARSET=utf8 COMMENT='Slow log'
5 là một bản ghi ghi lại những gì mysqld đã làm, mysql server ghi thông tin đến log này khi client kết nối hay ngắt kết nối, log lại mỗi câu truy vấn nhận được từ client. Log này rất hữu dụng khi bạn nghi ngờ có sự sai sót trong truy vấn và muốn truy được client nào đã gửi truy vấn tới.t bản ghi ghi lại những gì mysqld đã làm, mysql server ghi thông tin đến log này khi client kết nối hay ngắt kết nối, log lại mỗi câu truy vấn nhận được từ client. Log này rất hữu dụng khi bạn nghi ngờ có sự sai sót trong truy vấn và muốn truy được client nào đã gửi truy vấn tới.

Hướng dẫn mysql log all queries - mysql đăng nhập tất cả các truy vấn

  • Và để tạo bảng 
    CREATE TABLE `slow_log` (
       `start_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP 
                              ON UPDATE CURRENT_TIMESTAMP,
       `user_host` mediumtext NOT NULL,
       `query_time` time NOT NULL,
       `lock_time` time NOT NULL,
       `rows_sent` int(11) NOT NULL,
       `rows_examined` int(11) NOT NULL,
       `db` varchar(512) NOT NULL,
       `last_insert_id` int(11) NOT NULL,
       `insert_id` int(11) NOT NULL,
       `server_id` int(10) unsigned NOT NULL,
       `sql_text` mediumtext NOT NULL,
       `thread_id` bigint(21) unsigned NOT NULL
      ) ENGINE=CSV DEFAULT CHARSET=utf8 COMMENT='Slow log'
    2
CREATE TABLE `slow_log` (
   `start_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP 
                          ON UPDATE CURRENT_TIMESTAMP,
   `user_host` mediumtext NOT NULL,
   `query_time` time NOT NULL,
   `lock_time` time NOT NULL,
   `rows_sent` int(11) NOT NULL,
   `rows_examined` int(11) NOT NULL,
   `db` varchar(512) NOT NULL,
   `last_insert_id` int(11) NOT NULL,
   `insert_id` int(11) NOT NULL,
   `server_id` int(10) unsigned NOT NULL,
   `sql_text` mediumtext NOT NULL,
   `thread_id` bigint(21) unsigned NOT NULL
  ) ENGINE=CSV DEFAULT CHARSET=utf8 COMMENT='Slow log'

Log này lưu lại nhưng câu query mất nhiều thời gian để hoàn thành, bao lâu là lâu được định nghĩa ở biến 

CREATE TABLE `slow_log` (
   `start_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP 
                          ON UPDATE CURRENT_TIMESTAMP,
   `user_host` mediumtext NOT NULL,
   `query_time` time NOT NULL,
   `lock_time` time NOT NULL,
   `rows_sent` int(11) NOT NULL,
   `rows_examined` int(11) NOT NULL,
   `db` varchar(512) NOT NULL,
   `last_insert_id` int(11) NOT NULL,
   `insert_id` int(11) NOT NULL,
   `server_id` int(10) unsigned NOT NULL,
   `sql_text` mediumtext NOT NULL,
   `thread_id` bigint(21) unsigned NOT NULL
  ) ENGINE=CSV DEFAULT CHARSET=utf8 COMMENT='Slow log'
7, giá trị mặc định là 10s, slow_log rất quan trọng trong việc xác định query để tối ưu hóa hóa, nhầm tăng hiệu suất của hệ thống.

2. Mở tính năng ghi nhật kí log trên database

set global log_output = 'table';
set global general_log = 1;
set global slow_query_log = 1;

3. Định nghĩa thế nào là slow query

# Mình set 1s là lâu
set global long_query_time = 1;

4. Bây giờ để xem log bạn có thể dùng query này.

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

5. Nếu bạn muốn tắt log query vào table

set global general_log = 0;
set global slow_query_log = 0;

Nguồn : TablePlus

Bài viết gốc được đăng tải tại medium.com

Có thể bạn quan tâm:

  • Kinh nghiệm vận hành MySQL – Chú ý khi chọn MySQL làm database
  • Top 5 công cụ mã nguồn mở dành cho MySQL administrator
  • 11 cách tăng tốc nhanh cho WordPress bằng file wp-conig.php

Xem thêm Việc làm Developer hấp dẫn trên TopDev

Đôi khi bạn cần theo dõi tất cả các truy vấn được gửi đến máy chủ MySQL trong một khoảng thời gian. Máy chủ MySQL cung cấp một cách để hiển thị nhật ký truy vấn chung và nhật ký truy vấn chậm, nếu các nhật ký đó được bật. Các điểm đến có thể cho các mục nhật ký là các tệp nhật ký hoặc & nbsp; ________ 11 & nbsp; và & nbsp; ________ 12 & nbsp; các bảng trong & nbsp; ________ 13 & nbsp;

Trong bài đăng này, chúng tôi sẽ kích hoạt nhật ký chung và nhật ký truy vấn chậm và hiển thị chúng trong các bảng trong MySQL.

1. Đầu tiên, hãy kiểm tra xem bạn đã có hai bảng

CREATE TABLE `slow_log` (
   `start_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP 
                          ON UPDATE CURRENT_TIMESTAMP,
   `user_host` mediumtext NOT NULL,
   `query_time` time NOT NULL,
   `lock_time` time NOT NULL,
   `rows_sent` int(11) NOT NULL,
   `rows_examined` int(11) NOT NULL,
   `db` varchar(512) NOT NULL,
   `last_insert_id` int(11) NOT NULL,
   `insert_id` int(11) NOT NULL,
   `server_id` int(10) unsigned NOT NULL,
   `sql_text` mediumtext NOT NULL,
   `thread_id` bigint(21) unsigned NOT NULL
  ) ENGINE=CSV DEFAULT CHARSET=utf8 COMMENT='Slow log'
2 và
CREATE TABLE `slow_log` (
   `start_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP 
                          ON UPDATE CURRENT_TIMESTAMP,
   `user_host` mediumtext NOT NULL,
   `query_time` time NOT NULL,
   `lock_time` time NOT NULL,
   `rows_sent` int(11) NOT NULL,
   `rows_examined` int(11) NOT NULL,
   `db` varchar(512) NOT NULL,
   `last_insert_id` int(11) NOT NULL,
   `insert_id` int(11) NOT NULL,
   `server_id` int(10) unsigned NOT NULL,
   `sql_text` mediumtext NOT NULL,
   `thread_id` bigint(21) unsigned NOT NULL
  ) ENGINE=CSV DEFAULT CHARSET=utf8 COMMENT='Slow log'
1 tồn tại trong cơ sở dữ liệu
CREATE TABLE `slow_log` (
   `start_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP 
                          ON UPDATE CURRENT_TIMESTAMP,
   `user_host` mediumtext NOT NULL,
   `query_time` time NOT NULL,
   `lock_time` time NOT NULL,
   `rows_sent` int(11) NOT NULL,
   `rows_examined` int(11) NOT NULL,
   `db` varchar(512) NOT NULL,
   `last_insert_id` int(11) NOT NULL,
   `insert_id` int(11) NOT NULL,
   `server_id` int(10) unsigned NOT NULL,
   `sql_text` mediumtext NOT NULL,
   `thread_id` bigint(21) unsigned NOT NULL
  ) ENGINE=CSV DEFAULT CHARSET=utf8 COMMENT='Slow log'
3.

Nếu không, bạn phải tạo chúng, lưu ý rằng bạn phải tạo trong cơ sở dữ liệu & nbsp; ____ 13 & nbsp;

  • Để tạo bảng
    CREATE TABLE `slow_log` (
       `start_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP 
                              ON UPDATE CURRENT_TIMESTAMP,
       `user_host` mediumtext NOT NULL,
       `query_time` time NOT NULL,
       `lock_time` time NOT NULL,
       `rows_sent` int(11) NOT NULL,
       `rows_examined` int(11) NOT NULL,
       `db` varchar(512) NOT NULL,
       `last_insert_id` int(11) NOT NULL,
       `insert_id` int(11) NOT NULL,
       `server_id` int(10) unsigned NOT NULL,
       `sql_text` mediumtext NOT NULL,
       `thread_id` bigint(21) unsigned NOT NULL
      ) ENGINE=CSV DEFAULT CHARSET=utf8 COMMENT='Slow log'
    1:

  CREATE TABLE `general_log` (
   `event_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
                          ON UPDATE CURRENT_TIMESTAMP,
   `user_host` mediumtext NOT NULL,
   `thread_id` bigint(21) unsigned NOT NULL,
   `server_id` int(10) unsigned NOT NULL,
   `command_type` varchar(64) NOT NULL,
   `argument` mediumtext NOT NULL
  ) ENGINE=CSV DEFAULT CHARSET=utf8 COMMENT='General log'

Nhật ký truy vấn chung là một bản ghi chung về những gì & nbsp; ____ ____ 26 & nbsp; đang làm. Máy chủ ghi thông tin vào nhật ký này khi khách hàng kết nối hoặc ngắt kết nối và nó ghi lại từng câu lệnh SQL nhận được từ máy khách. Nhật ký truy vấn chung có thể rất hữu ích khi bạn nghi ngờ lỗi ở máy khách và muốn biết chính xác những gì máy khách đã gửi đến & nbsp; ________ 26.

  • Và bảng
    CREATE TABLE `slow_log` (
       `start_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP 
                              ON UPDATE CURRENT_TIMESTAMP,
       `user_host` mediumtext NOT NULL,
       `query_time` time NOT NULL,
       `lock_time` time NOT NULL,
       `rows_sent` int(11) NOT NULL,
       `rows_examined` int(11) NOT NULL,
       `db` varchar(512) NOT NULL,
       `last_insert_id` int(11) NOT NULL,
       `insert_id` int(11) NOT NULL,
       `server_id` int(10) unsigned NOT NULL,
       `sql_text` mediumtext NOT NULL,
       `thread_id` bigint(21) unsigned NOT NULL
      ) ENGINE=CSV DEFAULT CHARSET=utf8 COMMENT='Slow log'
    2

  CREATE TABLE `slow_log` (
   `start_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP 
                          ON UPDATE CURRENT_TIMESTAMP,
   `user_host` mediumtext NOT NULL,
   `query_time` time NOT NULL,
   `lock_time` time NOT NULL,
   `rows_sent` int(11) NOT NULL,
   `rows_examined` int(11) NOT NULL,
   `db` varchar(512) NOT NULL,
   `last_insert_id` int(11) NOT NULL,
   `insert_id` int(11) NOT NULL,
   `server_id` int(10) unsigned NOT NULL,
   `sql_text` mediumtext NOT NULL,
   `thread_id` bigint(21) unsigned NOT NULL
  ) ENGINE=CSV DEFAULT CHARSET=utf8 COMMENT='Slow log'

Nhật ký truy vấn chậm bao gồm các câu lệnh SQL mất nhiều hơn & nbsp; ________ 17 & nbsp; giây để thực hiện và yêu cầu tại các hàng ____ 30 & nbsp; Nhật ký truy vấn chậm có thể được sử dụng để tìm các truy vấn mất nhiều thời gian để thực hiện và do đó là ứng cử viên để tối ưu hóa.

Các giá trị tối thiểu và mặc định của & nbsp; ________ 17 & nbsp; lần lượt là 0 và 10. Giá trị có thể được chỉ định cho độ phân giải của micro giây.

2. Bật đăng nhập truy vấn trên cơ sở dữ liệu

SET global general_log = 1;
SET global log_output = 'table';

3. Bây giờ bạn có thể xem nhật ký bằng cách chạy truy vấn này:

SELECT
    *
FROM
    mysql.general_log;

4. Nếu bạn muốn vô hiệu hóa đăng nhập truy vấn trên cơ sở dữ liệu, hãy chạy truy vấn này:

CREATE TABLE `slow_log` (
   `start_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP 
                          ON UPDATE CURRENT_TIMESTAMP,
   `user_host` mediumtext NOT NULL,
   `query_time` time NOT NULL,
   `lock_time` time NOT NULL,
   `rows_sent` int(11) NOT NULL,
   `rows_examined` int(11) NOT NULL,
   `db` varchar(512) NOT NULL,
   `last_insert_id` int(11) NOT NULL,
   `insert_id` int(11) NOT NULL,
   `server_id` int(10) unsigned NOT NULL,
   `sql_text` mediumtext NOT NULL,
   `thread_id` bigint(21) unsigned NOT NULL
  ) ENGINE=CSV DEFAULT CHARSET=utf8 COMMENT='Slow log'
0


Sử dụng bảng, bạn có thể bật nhật ký bảng điều khiển từ GUI., you can enable the console log from the GUI.

Để bật/tắt nhật ký, nhấp vào nút nhật ký bảng điều khiển gần trên cùng bên phải hoặc sử dụng phím phím tắt CMD + Shift + C.

Bạn cũng có thể chọn ghi nhật ký truy vấn dữ liệu, truy vấn meta hoặc tất cả các truy vấn.

Hướng dẫn mysql log all queries - mysql đăng nhập tất cả các truy vấn


Mới đối với TablePlus? Nó là một công cụ hiện đại, gốc với GUI thanh lịch, cho phép bạn quản lý đồng thời nhiều cơ sở dữ liệu như MySQL, PostgreSQL, SQLite, Microsoft SQL Server và hơn thế nữa.

Tải xuống TablePlus tại đây. Dù sao thì nó cũng miễn phí!. It’s free anyway!

Hướng dẫn mysql log all queries - mysql đăng nhập tất cả các truy vấn