mysql定時執行某一儲存過程,並實現mysql資料庫的定時備份
阿新 • • 發佈:2019-01-05
mysql儲存過程
1、儲存過程(Stored Procedure)是一組為了完成特定功能的SQL語句集,經編譯後儲存在資料庫中,使用者通過指定儲存過程的名字並給定引數(如果該儲存過程帶有引數)來呼叫執行它。
語法:
SHOW PROCEDURE STATUS;
SHOW CREATE PROCEDURE Proc;
3.2. EVERY 時間(單位)的數量時間單位[STARTS 時間戳] [ENDS時間戳],用來完成重複的計劃任務
在兩種計劃任務中,時間戳可以是任意的TIMESTAMP 和DATETIME 資料型別,時間戳需要大於當前時間。
在重複的計劃任務中,時間(單位)的數量可以是任意非空(Not Null)的整數式,時間單位是關鍵詞:YEAR,MONTH,DAY,HOUR,MINUTE 或者SECOND。
ON COMPLETION引數表示"當這個事件不會再發生的時候",即當單次計劃任務執行完畢後或當重複性的計劃任務執行到了ENDS階段。而PRESERVE的作用是使事件在執行完畢後不會被Drop掉,建議使用該引數,以便於檢視EVENT具體資訊。
引數Enable和Disable表示設定事件的狀態。Enable表示系統將執行這個事件。Disable表示系統不執行該事件。
可以用如下命令關閉或開啟事件:
ALTER EVENT event_name ENABLE/DISABLE
[COMMENT 'comment']
註釋會出現在元資料中,它儲存在information_schema表的COMMENT列,最大長度為64個位元組。'comment'表示將註釋內容放在單引號之間,建議使用註釋以表達更全面的資訊
DO sql_statement欄位表示該event需要執行的SQL語句或儲存過程。這裡的SQL語句可以是複合語句,
檢視事件
SHOW EVENTS;
1、儲存過程(Stored Procedure)是一組為了完成特定功能的SQL語句集,經編譯後儲存在資料庫中,使用者通過指定儲存過程的名字並給定引數(如果該儲存過程帶有引數)來呼叫執行它。
語法:
CREATE PROCEDURE 過程名([[IN|OUT|INOUT] 引數名 資料型別[,[IN|OUT|INOUT] 引數名 資料型別…]]) [特性 ...] 過程體
DROP PROCEDURE IF EXISTS Proc;
CREATE PROCEDURE Proc()
BEGIN
INSERT INTO t_test (tname) VALUES ('張三');
END;
檢視已建立的儲存過程:SHOW PROCEDURE STATUS;
SHOW CREATE PROCEDURE Proc;
2、定時器來呼叫儲存過程
檢視定時器是否開啟
show VARIABLES LIKE '%event_sche%';
開啟定時器
SET GLOBAL event_scheduler =1;
但是每次重啟電腦。或重啟mysql服務後,會發現,事件自動關閉(event_scheduler=OFF),所以想讓事件一直保持開啟,最好修改配置檔案,讓mysql服務啟動的時候開啟時間,只需要在my.ini配置檔案的[mysqld]部分加上event_scheduler=ON 即可
#預設開啟事件
event_scheduler=ON
3、建立事件
3.1. AT 時間戳,用來完成單次的計劃任務。DROP EVENT IF EXISTS timeInsert; CREATE EVENT timeInsert ON SCHEDULE AT '2017-08-27 17:14:00' ON COMPLETION PRESERVE ENABLE DO CALL Proc();
3.2. EVERY 時間(單位)的數量時間單位[STARTS 時間戳] [ENDS時間戳],用來完成重複的計劃任務
在兩種計劃任務中,時間戳可以是任意的TIMESTAMP 和DATETIME 資料型別,時間戳需要大於當前時間。
在重複的計劃任務中,時間(單位)的數量可以是任意非空(Not Null)的整數式,時間單位是關鍵詞:YEAR,MONTH,DAY,HOUR,MINUTE 或者SECOND。
ON COMPLETION引數表示"當這個事件不會再發生的時候",即當單次計劃任務執行完畢後或當重複性的計劃任務執行到了ENDS階段。而PRESERVE的作用是使事件在執行完畢後不會被Drop掉,建議使用該引數,以便於檢視EVENT具體資訊。
引數Enable和Disable表示設定事件的狀態。Enable表示系統將執行這個事件。Disable表示系統不執行該事件。
可以用如下命令關閉或開啟事件:
ALTER EVENT event_name ENABLE/DISABLE
[COMMENT 'comment']
註釋會出現在元資料中,它儲存在information_schema表的COMMENT列,最大長度為64個位元組。'comment'表示將註釋內容放在單引號之間,建議使用註釋以表達更全面的資訊
DO sql_statement欄位表示該event需要執行的SQL語句或儲存過程。這裡的SQL語句可以是複合語句,
檢視事件
SHOW EVENTS;
4.建立批處理指令碼copyMysql.bat備份mysql資料庫
echo 取日期、時間變數值
set filename=%date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%%time:~6,2%
#如果mysql未加入到環境變數中則需要完整路徑C:Program_Files_MySQL_MySQL_Server_5.7_bin_mysqldump.exe
#_表示路徑分隔符
#-u表示使用者-p後面是密碼
#bill資料庫名稱
#-E匯出事件
mysqldump -uroot -proot --opt --default-character-set=utf8 -e --triggers -R -E --hex-blob --flush-logs -x bill > D:/db_backup/bill%filename%.sql
echo 匯出已經完成
#pause
注意:批處理命令中路徑裡有空格的話,必須在路徑上加上雙引號!以上使用mysqldump的進行mysql資料庫的備份,詳細瞭解請百度檢視相關資料
5.windows建立定時任務(百度一下)
參考:
http://www.cnblogs.com/zoro-zero/p/6511203.html
http://www.cnblogs.com/chevin/p/5683281.html
http://blog.csdn.net/lixingshi/article/details/54375460
http://www.cnblogs.com/andyshu/p/restTime.html