[英]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.