MySQL计划事件:数据库备份,包括输出文件中的日期
我现在正在努力使我的微型备份系统自动化。我设法收集了一些代码,但我做不到MySQL计划事件:数据库备份,包括输出文件中的日期,mysql,events,date-format,Mysql,Events,Date Format,我现在正在努力使我的微型备份系统自动化。我设法收集了一些代码,但我做不到 SET @sql_text = CONCAT ( "SELECT * FROM commandes INTO OUTFILE 'Y:/folder/Archives/BDD-commandes-CSV" , DATE_FORMAT( NOW(), '%Y%m%d') , "commandes.csv'" ); PREPARE s1 FROM @sql_text; CREATE EVENT Ba
SET @sql_text =
CONCAT (
"SELECT * FROM commandes INTO OUTFILE 'Y:/folder/Archives/BDD-commandes-CSV"
, DATE_FORMAT( NOW(), '%Y%m%d')
, "commandes.csv'"
);
PREPARE s1 FROM @sql_text;
CREATE EVENT BackUpCSV
ON SCHEDULE EVERY 1 HOUR
STARTS CURRENT_TIMESTAMP + INTERVAL 1 DAY
ENDS CURRENT_TIMESTAMP + INTERVAL 1 YEAR
DO
BEGIN
EXECUTE s1;
END |
DROP PREPARE s1;
这就是我试图做的。在第7行发现一个错误,实际上是一个空行(“#1064-您的SQL语法有错误;请查看与MySQL服务器版本对应的手册,以了解在第7行的“”附近使用的正确语法”)
如果能得到这样的帮助,我将不胜感激。thx关于定界符有很多。以下是可以编译的版本:
SET @sql_text =
CONCAT (
"SELECT * FROM commandes INTO OUTFILE 'Y:/folder/Archives/BDD-commandes-CSV"
, DATE_FORMAT( NOW(), '%Y%m%d')
, "commandes.csv'"
);
PREPARE s1 FROM @sql_text;
delimiter |
CREATE EVENT BackUpCSV
ON SCHEDULE EVERY 1 HOUR
STARTS CURRENT_TIMESTAMP + INTERVAL 1 DAY
ENDS CURRENT_TIMESTAMP + INTERVAL 1 YEAR
DO
BEGIN
EXECUTE s1;
END |
delimiter ;
DROP PREPARE s1;
此外,如果存在备份CSV,我建议添加drop事件|
另外,我不确定这个脚本是否能正常工作。为此,最好使用shell脚本或命令行。大概是这样的:
#!/bin/bash
mysqldump --add-drop-table -h <hostname> -u <username> --password=<password> --all-databases > filename.sql
filename="filename.sql."`eval date +%Y%m%d`".tgz"
tar -czf $filename filename.sql
rm filename.sql
#/bin/bash
mysqldump--add drop table-h-u--password=--all databases>filename.sql
filename=“filename.sql”。`eval date+%Y%m%d`.tgz“
tar-czf$filename.sql
rm filename.sql
您可以将其保存到文件中,并将该文件作为cron作业运行。
如果需要,您甚至可以使用相同的脚本将该归档文件推送到另一个系统
当然,您应该理解,在这种情况下,您将数据库凭据存储在一个普通文件中。但是,如果有人可以访问文件系统,我相信他/她会找到您的应用程序配置文件,而您的操作与此完全相同。太棒了,我不知道delimiter。我会进一步检查这一点,尽管你的脚本对我来说运行良好。好吧,当我在SQL textaera(phpmyadmin)中编写此脚本时,它基本上添加了一个事件,但该事件不起作用:正如我之前告诉你的,“我不确定此脚本是否能起作用”。您需要在事件中封装逻辑,而不是使用prepared语句进行奇怪的操作。我只是想避免cron作业,因为我在本地工作。但thanx,这有时可能会有帮助:)