Ein UPDATE oder INSERT in einer Datenbank soll ein lokales Skript starten. Dazu gibt es eigentlich mehrere M�glichkeiten:
- Polling. Polling ist aber keine schöne L�sung, f�r kurze Antwortzeiten muss das Skript h�ufig laufen und verbrennt daf�r unn�tig Resourcen.
- MySQL-UDF. Damit kann man zwar lokale Skripte aus Triggern heraus starten, ben�tigt aber eine Erweiterung, die grunds�tzlich sicherheitsproblematisch ist.
- Trigger mit "SELECT ... INTO OUTFILE '<filename>'". Damit kann man zwar eine Datei anlegen, aber nicht ausf�hren. Existiert die Datei schon, scheitert das UPDATE.
Ich habe eine andere M�glichkeit gew�hlt. MySql speichert alle Daten im Ordner /var/lib/mysql/<datenbank>/, dieses Verzeichnis lasse ich mit inotify �berwachen und starte dann mein beliebiges Skript.
Zuerst ben�tigt man inotify: $ apt-get install inotify-tools
#!/bin/sh
#
#
#
while inotifywait -e modify /var/lib/mysql/databasename; do
cd / && run-parts --report /usr/local/bin/script-to-start.sh| mail -s "Update" mail@example.de
Das Skript kann man dann mit $ nohup skript.sh & starten und es startet bei jeder Datenbank-�nderung das gew�nschte Skript.