#mysql #event-handling #file-io
#mysql #обработка событий #file-io
Вопрос:
Я создал событие в mysql для ежемесячного восстановления, оптимизации и удаления старых данных из некоторых таблиц.
разделитель $$ Создать событие CheckMyDB По РАСПИСАНИЮ С current_timestamp ИНТЕРВАЛ 1 МЕСЯЦ СДЕЛАТЬ УДАЛИТЬ ИЗ СЕАНСОВ, где MYCONDITION; ВОССТАНОВИТЬ ТАБЛИЦЫ DATANODES; ОПТИМИЗИРОВАТЬ ТАБЛИЧНЫЕ DATANODES; $$
теперь, как я могу узнать, каков результат моего события?? другими словами, могу ли я сохранить выходные данные delete, repair и otimize в таблице (что-то вроде В OUTFILE) или вставить их в пользовательскую таблицу или отправить по электронной почте (я не думаю, что отправка электронной почты из mysql возможна !!)
Спасибо за вашу помощь
Ответ №1:
Вы не можете получить выходные данные, если они выполняются как событие (насколько мне известно), не просматривая ваши журналы. Однако, если вы запустили это как скрипт, используя команду типа:
# mysql -u <user> -p<password> -vvv database < script.sql > script.log 2>amp;1
Вы можете записать все выходные данные в текстовый файл. -vvv
Увеличивает детализацию выходных данных, так что вы получаете x rows affected
etc.
Запуск этого скрипта в качестве задания cron позволит вам настроить то же расписание, что и для вашего события, но также упростит отправку файла результатов по электронной почте.
В целях безопасности рассмотрите возможность сохранения вашего пароля в my.cnf
файле для пользователя, который будет запускать скрипт:
[client]
user=<user>
password=<password>
Не забудьте сохранить chmod
этот файл, чтобы его мог прочитать только владелец.
Комментарии:
1. Согласен на 100% с этим ответом. Невозможно получить выходные данные из планировщика MySQL, поэтому это наиболее разумный подход.
2. @Simon: В связи с этим, есть ли какой-либо известный вам способ получить историю результатов выполнения событий MySQL?
SHOW EVENTS;
отображается только минимальная информация, даже не следующее запланированное время выполнения.