Thứ năm, 07/03/2019 | 00:00 GMT+7

Cách khắc phục sự cố truy vấn MySQL

Hướng dẫn này nhằm phục vụ như một tài nguyên khắc phục sự cố và điểm bắt đầu khi bạn chẩn đoán cài đặt MySQL của bạn . Ta sẽ xem xét một số vấn đề mà nhiều user MySQL gặp phải và cung cấp hướng dẫn để khắc phục sự cố cụ thể. Ta cũng sẽ bao gồm các liên kết đến các hướng dẫn DigitalOcean và tài liệu MySQL chính thức có thể hữu ích trong một số trường hợp nhất định.

Đôi khi user gặp sự cố khi họ bắt đầu đưa ra các truy vấn trên dữ liệu của họ. Trong một số hệ thống database , bao gồm MySQL, các câu lệnh truy vấn trong phải kết thúc bằng dấu chấm phẩy ( ; ) để truy vấn hoàn thành, như trong ví dụ sau:

  • SHOW * FROM table_name;

Nếu bạn không thêm dấu chấm phẩy vào cuối truy vấn của bạn , dấu nhắc sẽ tiếp tục trên một dòng mới cho đến khi bạn hoàn thành truy vấn bằng lệnh dấu chấm phẩy và nhấn ENTER .

Một số user có thể thấy rằng các truy vấn của họ cực kỳ chậm. Một cách để tìm câu lệnh truy vấn nào là nguyên nhân gây ra hiện tượng chậm là bật và xem log truy vấn chậm của MySQL. Để thực hiện việc này, hãy mở file mysqld.cnf của bạn, được sử dụng để cấu hình các tùy chọn cho server MySQL. Tệp này thường được lưu trữ trong folder /etc/mysql/mysql.conf.d/ :

  • sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

Cuộn qua file cho đến khi bạn thấy các dòng sau:

/etc/mysql/mysql.conf.d/mysqld.cnf
. . .
#slow_query_log         = 1
#slow_query_log_file    = /var/log/mysql/mysql-slow.log
#long_query_time = 2
#log-queries-not-using-indexes
. . .

Các chỉ thị được comment này cung cấp các tùy chọn cấu hình mặc định của MySQL cho log truy vấn chậm. Cụ thể, Đây là kết quả mỗi người trong số họ làm:

  • slow-query-log : Đặt giá trị này thành 1 kích hoạt log truy vấn chậm.
  • slow-query-log-file : Điều này xác định file mà MySQL sẽ ghi lại bất kỳ truy vấn chậm nào. Trong trường hợp này, nó trỏ đến file /var/log/mysql-slow.log .
  • long_query_time : Bằng cách đặt chỉ thị này thành 2 , nó cấu hình MySQL để ghi log bất kỳ truy vấn nào mất hơn 2 giây để hoàn thành.
  • log_queries_not_using_indexes : Điều này yêu cầu MySQL cũng ghi log bất kỳ truy vấn nào chạy mà không có index vào file /var/log/mysql-slow.log . Cài đặt này không cần thiết để log truy vấn chậm hoạt động, nhưng nó có thể hữu ích để phát hiện các truy vấn không hiệu quả.

Bỏ ghi chú từng dòng này bằng cách bỏ các dấu thăng đứng đầu ( # ). Phần bây giờ sẽ giống như sau:

/etc/mysql/mysql.conf.d/mysqld.cnf
. . .
slow_query_log = 1
slow_query_log_file = /var/log/mysql-slow.log
long_query_time = 2
log_queries_not_using_indexes
. . .

Lưu ý: Nếu bạn đang chạy MySQL 8+, các dòng comment này sẽ không có trong file mysqld.cnf theo mặc định. Trong trường hợp này, hãy thêm các dòng sau vào cuối file :

/etc/mysql/mysql.conf.d/mysqld.cnf
. . .
slow_query_log = 1
slow_query_log_file = /var/log/mysql-slow.log
long_query_time = 2
log_queries_not_using_indexes

 

Sau khi bật log truy vấn chậm, hãy lưu file . Sau đó khởi động lại dịch vụ MySQL:

  • sudo systemctl restart mysql

Với các cài đặt này, bạn có thể tìm thấy các câu lệnh truy vấn có vấn đề bằng cách xem log truy vấn chậm. Bạn có thể làm như vậy với less , như thế này:

  • sudo less /var/log/mysql_slow.log

Khi bạn đã chỉ ra các truy vấn gây ra sự chậm lại, bạn có thể tìm thấy hướng dẫn về Cách Tối ưu hóa Truy vấn và Bảng trong MySQL và MariaDB trên VPS để giúp ích cho việc tối ưu hóa chúng.

Ngoài ra, MySQL bao gồm câu lệnh EXPLAIN , cung cấp thông tin về cách MySQL thực thi các truy vấn. Trang này từ tài liệu MySQL chính thức cung cấp thông tin chi tiết về cách sử dụng EXPLAIN để làm nổi bật các truy vấn không hiệu quả.

Để được trợ giúp hiểu cấu trúc truy vấn cơ bản, hãy xem Giới thiệu về Truy vấn MySQL .


Tags:

Các tin liên quan

Cách cho phép truy cập từ xa vào MySQL
2019-03-07
Cách sửa chữa bảng bị hỏng trong MySQL
2019-03-07
Cách khắc phục sự cố lỗi socket trong MySQL
2019-03-07
Cách giải quyết sự cố trong MySQL
2019-03-07
Giới thiệu về Truy vấn trong MySQL
2018-10-17
Cách cài đặt MySQL mới nhất trên Debian 9
2018-09-05
Cách đặt lại mật khẩu gốc MySQL hoặc MariaDB của bạn trên Ubuntu 18.04
2018-09-04
Cách tạo một cụm MySQL nhiều node trên Ubuntu 18.04
2018-07-26
Cách cài đặt MySQL mới nhất trên Ubuntu 18.04
2018-07-12
Cách di chuyển thư mục dữ liệu MySQL đến vị trí mới trên Ubuntu 18.04
2018-07-06