mysql的定時event不繼續執行

mysql的定時觸發的event建好後沒有發生預定的事件,歸納起來有以下幾種:

1.全局的event 是關閉的:
  實際上mysql的event默認值是off
  查看event是否開啓: show variables like 'event_scheduler';
   將event事件計劃開啓: set global event_scheduler=1;
   
有時候event運行一段時間,電腦重啓後,event失效了。在生產環境這種事是不允許發生的
怎麼辦?
--------系統重啓後,event自動關閉的解決方法-----------------
my.ini(windows) or my.cnf(linux) 中的
[mysqld]
添加 event_scheduler=ON

 
2.用戶權限的修改導致event失效,
這種情況很少發生,但發生後又找不到問題,那就看看你建的event所屬者有沒有這個執行權限吧
如: DEFINER=`root`@`127.0.0.1`
    select * from mysql.user where Host='127.0.0.1'

查看127.0.0.1這個ip有沒有執行的權限

 
3.event 設成了DISABLE; 這種情況
這裏以test_event爲例:
關閉事件任務: alter event test_event ON COMPLETION PRESERVE DISABLE; 
開戶事件任務: alter event test_event ON COMPLETION PRESERVE ENABLE;

查看所有 event:  SHOW EVENTS;
或者  select * from information_schema.EVENTS;

4.查看一下err log,如果event正常運行,並且檢查PROCEDURE沒有錯誤,那就有可能是PROCEDURE在執行過程中報錯,這部分報錯會記錄到error日誌中
比如,今天遇到的問題就是
阿里雲上某環境中的歸檔event執行不成功,經過檢查,確認event正常執行(select * from information_schema.EVENTS;);並且用戶權限也都沒有問題
[GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, PROCESS, REFERENCES, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER ON *.* TO 'user'@'10.60.40.%' WITH GRANT OPTION;].

之後檢查日誌,發現 有一個主鍵衝突,經過比對分析,刪除歸檔表中該主鍵記錄。等待下一次event執行驗證

參考頁面
https://www.iteye.com/blog/liu346435400-1575299

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章