Database

Membuat Event Scheduler di MySQL

Kenalan dengan Event Scheduler?

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.

Mengaktifkan Event Scheduler

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

Membuat Event Scheduler

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);

Tips dan Best Practices

Berikut beberapa tips dalam menggunakan Event Scheduler:

  • Beri nama yang deskriptif - Gunakan nama event yang jelas menggambarkan fungsinya, misalnya cleanup_old_logs atau daily_backup
  • Gunakan IF NOT EXISTS - Tambahkan klausa ini untuk menghindari error jika event sudah ada
  • Monitor event yang aktif - Jalankan SHOW EVENTS untuk melihat daftar event yang aktif
  • Disable sementara - Gunakan ALTER EVENT nama_event DISABLE untuk menonaktifkan event tanpa menghapusnya
  • Error handling - Gunakan stored procedure dengan error handling untuk menangani kegagalan eksekusi event

Kesimpulan

Event 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.

Contoh Praktis: Cleanup Data Otomatis

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.

Monitoring dan Debugging

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.


You may also like


0 Comments


Leave a Reply

Comments with links or spam keywords will be rejected.
Scroll to Top