Ab MySQL Version 5.1.12 gibt es einen Event Scheduler, der mit Cronjobs gleichzusetzen ist, nur eben auf Datenbank-Ebene.
Der Vorteil gegenüber einem Cronjob ist, dass man nicht erst ein Shell-Script oder Wrapper um die eigentliche MySQL-Operation bauen muss. Auch muss man sich über den evtl. nicht laufenden crond keine Sorgen machen…
Zu Anfang wird geprüft, ob der Event Scheduler überhaupt in der Version von MySQL vorhanden ist, bzw. ob er schon aktiviert ist:
SHOW GLOBAL VARIABLES LIKE "%event_scheduler%";
Kommt ein Empty set (0.00 sec)
zurück, ist die zum Einsatz kommende Version von MySQL „zu alt“. Wird ein ON
geliefert, ist der Scheduler bereits aktiv. Bei OFF
muss dieser erst aktiviert werden, mit…
SET GLOBAL event_scheduler = ON;
Nun aber nicht vergessen, das Aktivieren auch in der /etc/my.cnf
zu hinterlegen!
Nun wird der entsprechende Nutzer mit dem EVENT-Privileg ausgestattet:
GRANT EVENT ON database.table TO user@host;
Als User, der das EVENT-Privileg hat, kann man nun z.B. folgendes ausführen:
CREATE EVENT myevent ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 HOUR DO UPDATE myschema.mytable SET mycol = mycol + 1;