Xử lý lỗi

CHỦ ĐỀ: GIÁM SÁT VÀ XỬ LÝ LỖI TRONG MYSQL

 

  1. Phát hiện và chẩn đoán lỗi hệ thống MySQL.
  2. Sử dụng các log, công cụ Performance Schema, Error Log để tìm nguyên nhân.
  3. Khắc phục sự cố phổ biến: khởi động lỗi, truy cập thất bại, hỏng bảng, xung đột cấu hình.
  4. Đưa ra khuyến nghị giám sát và cảnh báo sớm.

🧩 1. CÁC LOẠI LỖI PHỔ BIẾN TRONG MYSQL

Nhóm lỗi Mô tả Ví dụ thực tế
Kết nối (Connection) Không kết nối được MySQL, sai quyền, sai IP ERROR 1045 (28000): Access denied for user
Cấu hình (Configuration) File my.ini sai, cổng trùng, không đủ bộ nhớ Can't start server: Bind on TCP/IP port
Cú pháp SQL (Syntax) Sai lệnh, thiếu dấu hoặc từ khóa ERROR 1064 (42000): You have an error in your SQL syntax
Khóa (Locking) Giao dịch bị treo do khóa hàng hoặc bảng Lock wait timeout exceeded
Hiệu năng (Performance) Truy vấn chậm, CPU/RAM cao Ghi trong Slow Query Log
Dữ liệu (Data corruption) File .ibd hoặc .frm hỏng Table 'abc' is marked as crashed

🧠 2. CÔNG CỤ GIÁM SÁT LỖI CHUẨN TRONG MYSQL

Công cụ Mục đích Lệnh kiểm tra
Error Log Ghi lại lỗi hệ thống, khởi động, crash SHOW VARIABLES LIKE 'log_error';
Performance Schema Giám sát hoạt động, chậm trễ, lỗi trong session SELECT * FROM performance_schema.events_errors_summary_by_account_by_error;
Information Schema Kiểm tra trạng thái, khóa, session SELECT * FROM information_schema.processlist;
SHOW ENGINE INNODB STATUS Phân tích khóa và crash InnoDB SHOW ENGINE INNODB STATUS\G
MySQL Workbench – Dashboard Biểu đồ CPU, Connections, Threads, Queries Tab Performance → Dashboard
Windows Event Viewer Nhật ký lỗi hệ điều hành eventvwr.msc

🔍 3. HƯỚNG DẪN THỰC HÀNH TỪNG BƯỚC

🧩 Bước 1. Kiểm tra file Error Log

1.1. Xác định vị trí log:

SHOW VARIABLES LIKE 'log_error';

➡ Ví dụ:

Value = C:\ProgramData\MySQL\MySQL Server 8.0\Data\DESKTOP-62.err

1.2. Mở file log bằng Notepad hoặc Workbench.
Quan sát các dòng có từ khóa:

  • [ERROR] → lỗi hệ thống, dịch vụ.
  • [Warning] → cảnh báo, nên theo dõi.
  • [Note] → thông báo thông thường.

📋 Thực hành: Gây lỗi cố ý khi MySQL khởi động (sai cổng, sai đường dẫn datadir) → đọc Error Log để hiểu lỗi.


🧩 Bước 2. Giám sát lỗi đang xảy ra trong phiên (Runtime)

2.1. Bật Performance Schema:

performance_schema=ON

2.2. Kiểm tra lỗi hiện tại:

SELECT * 
FROM performance_schema.events_errors_summary_by_account_by_error
ORDER BY SUM_ERROR_RAISED DESC
LIMIT 5;

→ Cho biết tài khoản nào hoặc truy vấn nào phát sinh lỗi nhiều nhất.


🧩 Bước 3. Theo dõi khóa & tắc nghẽn (Deadlock)

3.1. Kiểm tra giao dịch đang khóa:

SELECT * FROM information_schema.innodb_locks;

3.2. Kiểm tra tiến trình gây nghẽn:

SHOW PROCESSLIST;

3.3. Dừng session lỗi:

KILL <process_id>;

🧩 Bước 4. Phân tích lỗi hiệu năng

4.1. Kích hoạt Slow Query Log:

SET GLOBAL slow_query_log = 1;
SET GLOBAL long_query_time = 1;

4.2. Đọc file log và xác định truy vấn “nặng”:
Tìm câu lệnh có Query_time > 1.000000 sec.

4.3. Kiểm tra bằng EXPLAIN:

EXPLAIN SELECT * FROM sinhvien WHERE hoten LIKE '%Nguyen%';

4.4. Tạo chỉ mục để giảm lỗi “Full Table Scan”:

CREATE INDEX idx_hoten ON sinhvien(hoten);

🧩 Bước 5. Mô phỏng sự cố dữ liệu hỏng

  1. Dừng dịch vụ MySQL.
  2. Xóa file .ibd của 1 bảng.
  3. Khởi động lại → lỗi “Table is marked as crashed”.
  4. Khắc phục bằng:
    REPAIR TABLE tenbang;
    

📊 4. QUY TRÌNH PHÂN TÍCH NGUYÊN NHÂN GỐC (Root Cause Analysis)

Bước Mô tả Công cụ
1 Phát hiện lỗi qua log, giám sát, người dùng báo Error Log, Dashboard
2 Xác định thời điểm và tần suất lỗi Performance Schema
3 Phân loại lỗi (kết nối, dữ liệu, truy vấn, cấu hình) SHOW ENGINE STATUS
4 Khoanh vùng module và tài khoản gây lỗi processlist, events_errors_summary
5 Đề xuất biện pháp khắc phục và phòng ngừa Điều chỉnh config, index, backup

🧮 5. THỰC HÀNH TỔNG HỢP (30’)

Tình huống:

Hệ thống báo lỗi:

ERROR 1040 (HY000): Too many connections

Yêu cầu:

  1. Tìm nguyên nhân trong Error Log.
  2. Kiểm tra số kết nối hiện tại:
    SHOW STATUS LIKE 'Threads_connected';
    
  3. Tăng giới hạn:
    SET GLOBAL max_connections = 300;
    
  4. Ghi lại trong báo cáo:
    • Nguyên nhân gốc.
    • Cách khắc phục.
    • Biện pháp phòng ngừa (cảnh báo giám sát sớm).

🧠 TỔNG KẾT

“Một DBA giỏi không phải là người không gặp lỗi, mà là người biết cách hiểu lỗi, đọc được tín hiệu cảnh báo sớm, và xây hệ thống để lỗi không lặp lại.”

 

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *