-
Giới thiệu và khởi tạo môi trường MySQL
- Hướng dẫn cài đặt và cấu hình MySQL Server trên Windows cho kết nối từ xa
- Vận dụng tư duy phân tích dữ liệu với Mysql từ cơ bản đến nâng cao
- Vận dụng tư duy phân tích quản trị dữ liệu với MySQL
- Tối ưu hoá công việc quản trị với view và bảng tạm
- Tôi ưu hoá với thủ tục – procedure trong mysql
- Nhóm hàm windown
- Con trỏ và phân vùng trong mysql
- Làm việc với hàm tự tạo trong Mysql
- Làm việc với trigger trong Mysql
- Làm việc với giao dịch
- Tìm hiểu về truy vấn động
- Even – Sự kiện định kỳ trong Mysql
-
Quản trị dữ liệu trong doanh nghiệp
- Tổng quan về trục quản trị dữ liệu
- Quản trị & Giám sát hệ thống với cơ sở dữ liệu ảo information_schema
- Cấu hình và lưu trữ
- Cấu hình file my.ini
- An toàn và toàn vẹn dữ liệu – Bảo mật – Backup
- Hiệu năng và tối ưu hoá
- Đồng bộ và phục hồi
- Phân tích tối ưu hoá hiệu năng với dữ liệu bảng performance_schema
-
Chiến lược quản trị dữ liệu
Xử lý lỗi
CHỦ ĐỀ: GIÁM SÁT VÀ XỬ LÝ LỖI TRONG MYSQL
- Phát hiện và chẩn đoán lỗi hệ thống MySQL.
- Sử dụng các log, công cụ Performance Schema, Error Log để tìm nguyên nhân.
- 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.
- Đư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
- Dừng dịch vụ MySQL.
- Xóa file
.ibdcủa 1 bảng. - Khởi động lại → lỗi “Table is marked as crashed”.
- 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:
- Tìm nguyên nhân trong Error Log.
- Kiểm tra số kết nối hiện tại:
SHOW STATUS LIKE 'Threads_connected'; - Tăng giới hạn:
SET GLOBAL max_connections = 300; - 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.”