MYSQL PROCEDURE => incron => tail -f 'mysql_dynamic.log'
Хранимая процедура может быть вызвана внутри триггера, но ничего не должна возвращать
CREATE PROCEDURE `DYN_LOG` (IN s VARCHAR(500))
BEGIN
SELECT s into outfile '/var/spool/incron/mysql_dynamic_spool/foo_file';
DO SLEEP(.1); // create a gap beetween multiple shuts
END
Теперь в любом месте триггера вы можете вызвать
CREATE TRIGGER `trig_name` BEFORE UPDATE ON `tb_name`
FOR EACH ROW
BEGIN
CALL DYN_LOG(concat_ws('\t',NEW.col1,NEW.col2));
...
// rest of the code
END
для машин Linux apt-get install incron
(руководство по Debian Incron)
Создать папку, в которую mysql будет вставлять foo_file
mkdir -m 777 /var/spool/incron/mysql_dynamic_spool
incrontab -e
и добавить следующее задание incron
/var/spool/incron/mysql_dynamic_spool IN_CREATE /path/foo_file_procesor $@/$#
Создать исполняемый скрипт "/ path / foo_file_procesor"
#!/bin/sh
# // $1 is the foo_file absolute addres
body="$( cat $1 )" // read file content
rm $1
log=/var/log/mysql_dynamic.log // message collector
echo "`date "+%y%m%d %H:%M:%S"`\t== dyn_log ==\t$body">>$log
exit 0
Теперь смотрите файл сборщика
tail -f /var/log/mysql_dynamic.log