cd ~/

Home of Daniel Graf

Benutzer-Werkzeuge

Webseiten-Werkzeuge


Seitenleiste

cd ~/

Home of Daniel Graf

Seiten

Suche

Blog Meta

Dynamo Dresden

Galerie

braindump:zeitgesteuerte_jobs

MySQL - Zeitgesteuerte Jobs

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…

Aktivieren und Rechte setzen

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;

Event einrichten

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;

MySQL Dokumentation

braindump/zeitgesteuerte_jobs.txt · Zuletzt geändert: 2016/04/15 09:17 von Daniel Graf