[英]how to take periodically database script backup using event in mysql
我想每天使用mySql中的事件進行數據庫腳本備份。我是mySql的新手,所以無法找到確切的解決方案。有人可以幫助我嗎? 使用mysqldump實用工具對其進行了嘗試,但它是面向命令promt的,我希望僅通過事件調度程序來完成。
DELIMITER $$
create EVENT `Backup`
ON SCHEDULE EVERY 1 minute
STARTS '2016-02-25 17:08:06' ON COMPLETION PRESERVE ENABLE
DO
BEGIN
SET @sql_text = CONCAT("SELECT * FROM purpleaid INTO OUTFILE '/C:/Users/Admin123/Desktop/db/" , DATE_FORMAT( NOW(), '%Y%m%d') , "db.csv'" );
PREPARE s1 FROM @sql_text;
EXECUTE s1;
DEALLOCATE PREPARE s1;
END $$
DELIMITER ;
嘗試過這個,但僅適用於單個表。我想要完整的數據庫腳本
您可以使用information_schema.tables表獲取數據庫中的表列表,並使用information_schema.columns表獲取列的列表(以防萬一您希望備份文件中包含列名)。
select ... into outfile ...
構造select ... into outfile ...
語句,只需從變量中添加表名即可。 如果要動態地將列名添加到輸出中,請結合來自SO主題的 Joe和matt的答案。
更新
對於視圖,存儲過程,函數和觸發器(就此而言,表)的問題是,您不能真正在sql中與show create ...
語句的結果進行交互。 您可以嘗試從各自的information_schema表中重新創建它們的定義,但是據我所知,僅根據這些表就不可能完全重建每個對象。 您需要為此使用外部工具,例如mysqldump。 如果您想要一個完整的備份選項,那么,如果使用的是由OS的任務計划程序計划的外部工具,則情況會好得多。
由於表結構和其他數據庫對象不會經常更改(至少在生產環境中不會更改),因此您可以使用外部工具備份結構,並使用內部計划腳本定期備份內容。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.