как получить результат невыбираемых инструкций mysql в OUTFILE?

#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; отображается только минимальная информация, даже не следующее запланированное время выполнения.