使用mysql的存儲過程+事件+定時任務實現數據分表遷移

先是確保mysql的定時任務是開啓的

        SET GLOBAL event_scheduler = 1;
   ---或我們可以在配置my.cnf文件 中加上 event_scheduler = 1

  或

  SET GLOBAL event_scheduler = ON;

       關閉的話就設置爲0或off

 

一 :創建存儲過程

DELITMITER ??      # 將結束符置爲??,因爲在多sql的存儲過程中會用到;,爲了不讓其終止,先將結束符換掉

CREATE PROCEDURE copy_to_new()

BEGIN        #存儲過程開始

START TRANSACTION;   #開啓事務

INSERT INTO table_copy SELECT * from table_main where time < 'xxx' and time > 'xxx';

DELETE FROM table_main where time < 'xxx' and time > 'xxx';

COMMIT;

END ??  #存儲過程結束

DELIMITER ; #將結束符置爲;

--call copy_to_new 可以調用這個存儲過程

--drop procedure copy_to_new 刪除

二:創建event

CREATE EVENT day_event # 創建event
ON SCHEDULE EVERY 1 DAY STARTS TIMESTAMP '2020-01-01 00:00:00' #從這天開始一天執行一次
DO CALL copy_to_new()  # 執行內容爲調用這個存儲過程

#這段sql就已經將事件放入定時任務中了

--drop event day_event

三:放進定時器

ALTER EVENT day_event ON COMPLETION PRESERVE ENABLE; #將事件加入定時任務中
查看事件
show create procedure copy_to_new;
將事件從定時器中移除
alter event day_event on completion preserve disable;
查看定時器
select event_name,event_definition,intervel_value,interval_field,status from information_schema.EVENTS;

 

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