-
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
Even – Sự kiện định kỳ trong Mysql
🎯 1️⃣ EVENT trong MySQL là gì?
EVENT là công cụ lập lịch (scheduler) trong MySQL, cho phép bạn chạy tự động một khối lệnh SQL hoặc thủ tục (procedure) vào một thời điểm xác định hoặc định kỳ lặp lại — giống như cron job trong hệ điều hành Linux.
⚙️ 2️⃣ Đặc điểm chính
| Thuộc tính | Giải thích |
|---|---|
| Được quản lý bởi MySQL Event Scheduler | Cần bật trước khi dùng: SET GLOBAL event_scheduler = ON; |
| Chạy trên server, không phụ thuộc client | Không cần ai đăng nhập — MySQL tự thực thi |
| Có thể chạy 1 lần hoặc định kỳ | Dùng ON SCHEDULE AT ... (1 lần) hoặc ON SCHEDULE EVERY ... (lặp lại) |
| Thường gọi thủ tục hoặc lệnh SQL trực tiếp | Ví dụ: CALL sp_check_capacity(); |
| Có thể bật/tắt từng event hoặc toàn bộ scheduler | ALTER EVENT ... ENABLE / DISABLE hoặc SET GLOBAL event_scheduler = OFF; |
🧩 3️⃣ Cú pháp tổng quát
CREATE EVENT [IF NOT EXISTS] event_name
ON SCHEDULE
AT timestamp
| EVERY interval [STARTS timestamp] [ENDS timestamp]
DO
sql_statement;
Ví dụ:
CREATE EVENT ev_auto_cleanup
ON SCHEDULE EVERY 1 DAY
STARTS CURRENT_TIMESTAMP + INTERVAL 1 HOUR
DO
DELETE FROM backup_log WHERE recorded_at < NOW() - INTERVAL 30 DAY;
📘 Giải thích:
- Event tên
ev_auto_cleanup - Tự động chạy mỗi ngày một lần
- Bắt đầu sau 1 giờ kể từ khi tạo
- Thực hiện xóa bản ghi backup cũ hơn 30 ngày
🧠 4️⃣ Kiểm tra trạng thái Event Scheduler
SHOW VARIABLES LIKE 'event_scheduler';
Nếu trả về OFF, bạn bật nó bằng:
SET GLOBAL event_scheduler = ON;
🔍 5️⃣ Kiểm tra, bật/tắt, hoặc xóa event
SHOW EVENTS FROM ADMIN_DB;
ALTER EVENT ev_auto_cleanup DISABLE;
ALTER EVENT ev_auto_cleanup ENABLE;
DROP EVENT IF EXISTS ev_auto_cleanup;
💼 6️⃣ Ví dụ thực tế trong bài toán quản trị dữ liệu
🎯 Mục tiêu:
Tự động gọi chuỗi thủ tục quản trị mỗi ngày để:
- Đồng bộ metadata
- Ghi nhận hiệu năng
- Kiểm tra dung lượng
- Quét tài khoản người dùng
🧩 Ví dụ:
-- Đảm bảo thủ tục tổng hợp đã tồn tại
-- (sp_daily_admin_job được tạo ở phần trước)
CREATE EVENT IF NOT EXISTS ev_daily_admin_job
ON SCHEDULE EVERY 1 DAY
STARTS CURRENT_TIMESTAMP + INTERVAL 5 MINUTE
DO
CALL sp_daily_admin_job();
📅 Tác dụng:
- Mỗi ngày, MySQL tự chạy
sp_daily_admin_job() - Thủ tục đó sẽ tự động: đồng bộ database, thu thập hiệu năng, ghi log cảnh báo, cập nhật dung lượng, v.v.
- DBA không cần thao tác thủ công.
🔄 7️⃣ Kết hợp event + log giám sát
Để đảm bảo mọi event đều được ghi lại:
CREATE EVENT IF NOT EXISTS ev_log_event_status
ON SCHEDULE EVERY 1 DAY
DO
INSERT INTO job_log (job_name, status, message)
VALUES ('ev_log_event_status', 'SUCCESS', CONCAT('Event scheduler chạy lúc ', NOW()));
→ Giúp bạn biết chính xác event có đang hoạt động hay không.
🚨 8️⃣ Lưu ý khi sử dụng EVENT
| Lưu ý | Mô tả |
|---|---|
| 🔒 Quyền hạn cần thiết | Người tạo event cần quyền EVENT hoặc SUPER |
| ⚙️ Chạy theo thời gian hệ thống server | Cần kiểm tra múi giờ: SELECT @@global.time_zone; |
| 🧹 Bảo trì định kỳ | Event chỉ nên chạy lệnh nhẹ hoặc gọi thủ tục — không nên chứa logic nặng trực tiếp |
| 🕒 Không nên tạo event trùng lịch | Dễ gây nghẽn hoặc ghi log trùng |
🧾 Có thể theo dõi qua information_schema.EVENTS |
Giúp DBA thống kê event đang chạy |
🧭 9️⃣ Tổng kết
| Khía cạnh | Mục tiêu |
|---|---|
| Mục đích | Tự động hóa các tác vụ quản trị (sao lưu, kiểm tra, cảnh báo) |
| Tần suất | Hàng phút, giờ, ngày, tuần tùy nghiệp vụ |
| Kết hợp | Với stored procedures để tách logic & kiểm soát lỗi |
| Quản lý | Qua information_schema.EVENTS hoặc SHOW EVENTS |
| Bảo mật & ổn định | Chỉ bật event_scheduler khi cần, tránh chạy code nặng |