
Event Scheduler là gì?
Event Scheduler là một tính năng của MySQL (từ phiên bản 5.1.6) giúp bạn lập lịch chạy các tác vụ tự động trong cơ sở dữ liệu theo thời gian định sẵn. Nó giống như một “trợ thủ” bên trong MySQL, cho phép thực thi các câu lệnh SQL mà không cần mã bên ngoài hay công cụ bổ sung.
Ví dụ: Bạn có thể dùng nó để xóa bản ghi cũ hoặc cập nhật dữ liệu hàng ngày mà không cần can thiệp thủ công.
Chức năng của Event Scheduler dùng để làm gì?
Event Scheduler được thiết kế để:
- Tự động hóa tác vụ: Xóa dữ liệu hết hạn, cập nhật trạng thái, hoặc tạo báo cáo định kỳ.
- Thay thế Cron Jobs: Thực hiện các tác vụ định kỳ ngay trong MySQL mà không cần script bên ngoài.
- Xử lý logic đơn giản: Chạy các câu lệnh SQL theo lịch trình, như thống kê doanh thu mỗi đêm.
Ví dụ: Tự động xóa log cũ hơn 7 ngày:
CREATE EVENT clean_logs
ON SCHEDULE EVERY 1 DAY
DO
DELETE FROM logs WHERE created_at < NOW() - INTERVAL 7 DAY;
Cách bật Event Scheduler trong file my.cnf
Để sử dụng Event Scheduler, bạn cần bật nó trên máy chủ MySQL. Dưới đây là cách cấu hình trong file my.cnf
Tìm file my.cnf:
- Trên Linux, thường nằm ở /etc/my.cnf hoặc /etc/mysql/my.cnf.
- Trên Windows, kiểm tra thư mục cài đặt MySQL (thường là my.ini).
Chỉnh sửa file:
Mở file bằng trình soạn thảo (như nano hoặc vi):
nano /etc/my.cnf
Thêm hoặc sửa dòng sau vào phần [mysqld]:
[mysqld]
event_scheduler = ON

Lưu và khởi động lại MySQL:
- Lưu file (Ctrl+O, Enter, Ctrl+X nếu dùng nano).
- Khởi động lại MySQL để áp dụng thay đổi:
service mysql restart
systemctl restart mysql
Kiểm tra trạng thái:
Đăng nhập vào MySQL:
mysql -u root -p
Chạy lệnh:
SELECT @@event_scheduler;
Nếu kết quả là ON, bạn đã bật thành công!
Lưu ý
- Bạn cần quyền SUPER hoặc quyền quản trị máy chủ để chỉnh sửa my.cnf. Nếu dùng shared hosting, hãy liên hệ nhà cung cấp.
- Sau khi bật, bạn có thể tạo sự kiện trong phpMyAdmin hoặc qua lệnh SQL mà không gặp lỗi quyền.