Event Scheduler adalah fitur bawaan MySQL yang memungkinkan kamu untuk menjalankan query atau stored procedure secara otomatis berdasarkan jadwal yang telah ditentukan. Fitur ini sangat berguna untuk tugas-tugas rutin seperti backup database, pembersihan data lama, atau pembaruan data secara berkala.
Sebelum menggunakan Event Scheduler, pastikan fitur ini sudah aktif di MySQL kamu. Jalankan query berikut untuk memeriksa statusnya:
SHOW VARIABLES LIKE 'event_scheduler'; Jika nilai yang ditampilkan adalah OFF, aktifkan dengan menjalankan:
SET GLOBAL event_scheduler = ON; Untuk mengaktifkan secara permanen, tambahkan baris berikut pada file konfigurasi MySQL (my.ini atau my.cnf):
[mysqld] event_scheduler=ON Setelah Event Scheduler aktif, kamu dapat membuat event baru dengan sintaks berikut:
CREATE EVENT nama_event ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 HOUR DO
UPDATE tabel
SET kolom = 'nilai'
WHERE kondisi; kamu juga dapat membuat event yang berulang (recurring) dengan menggunakan EVERY:
CREATE EVENT event_harian ON SCHEDULE EVERY 1 DAY STARTS '2024-01-01 00:00:00' DO
DELETE
FROM log_table
WHERE created_at < DATE_SUB(NOW(), INTERVAL 30 DAY); Berikut beberapa tips dalam menggunakan Event Scheduler:
cleanup_old_logs atau daily_backupSHOW EVENTS untuk melihat daftar event yang aktifALTER EVENT nama_event DISABLE untuk menonaktifkan event tanpa menghapusnyaEvent Scheduler MySQL adalah tools yang powerful untuk mengotomasi tugas database. Dengan perencanaan yang baik dan monitoring yang tepat, fitur ini dapat menghemat waktu dan mengurangi risiko human error dalam pengelolaan database.
Berikut contoh Event Scheduler untuk membersihkan data log yang lebih dari 90 hari:
DELIMITER //
CREATE EVENT IF NOT EXISTS cleanup_old_logs
ON SCHEDULE EVERY 1 DAY
STARTS CURRENT_TIMESTAMP
DO
BEGIN
DELETE
FROM activity_log
WHERE created_at < DATE_SUB(NOW(), INTERVAL 90 DAY);
INSERT INTO cleanup_log (action, deleted_count, executed_at)
VALUES ('cleanup_old_logs', ROW_COUNT(), NOW());
END//
DELIMITER ;
Contoh di atas tidak hanya menghapus data lama, tetapi juga mencatat berapa baris yang dihapus ke tabel log untuk keperluan audit.
Untuk memantau event yang berjalan, gunakan query berikut:
-- Melihat semua event
SHOW EVENTS
FROM nama_database;
-- Melihat status event_scheduler
SHOW PROCESSLIST;
-- Melihat detail event spesific
SHOW CREATE EVENT nama_event
G
Jika event tidak berjalan, cek apakah event_scheduler aktif dan apakah user memiliki privilege yang cukup untuk membuat dan menjalankan event.