如何在MySQL中创建每日转储?

时间:2015-09-11 23:20:33

标签: mysql sql cron mysqldump mysql-event

我想使用

每天转储MySQL中的所有数据库
  

事件安排程序

,到现在为止我有了这个查询来创建事件:

DELIMITER $$
CREATE EVENT `DailyBackup`
ON SCHEDULE EVERY 1 DAY STARTS '2015-11-09 00:00:01'
ON COMPLETION NOT PRESERVE ENABLE
DO 
BEGIN
mysqldump -user=MYUSER -password=MYPASS all-databases > CONCAT('C:\Users\User\Documents\dumps\Dump',DATE_FORMAT(NOW(),%Y %m %d)).sql
END $$
DELIMITER ;

问题是MySQL似乎无法识别命令'mysqldump',并向我显示如下错误:语法错误:缺少'冒号'。 我不是SQL的专家,我试图找到解决方案,但我不能,希望有人能帮助我。

修改

帮助将此声明作为cron任务

3 个答案:

答案 0 :(得分:2)

对于Windows,使用required命令创建.bat文件,然后根据计划创建运行该.bat文件的计划任务。

以这种方式创建.bat文件,根据需要替换您的用户名,密码和数据库名称:

mysqldump --opt --host=localhost --user=root --password=yourpassword dbname > C:\some_folder\some_file.sql

然后转到开始菜单,控制面板,管理工具,任务计划程序。点击动作>创造任务。转到操作选项卡,点击新建,浏览到.bat文件并将其添加到任务中。然后转到触发器选项卡,点击新建,并定义您的每日时间表。请参阅http://windows.microsoft.com/en-US/windows/schedule-task

您可能希望使用7zip之类的工具在同一命令中压缩备份(可以从命令行调用7zip)。安装7zip的示例如下所示:

mysqldump --opt --host=localhost --user=root --password=yourpassword dbname | 7z a -si C:\some_folder\some_file.7z

我用它来在文件名中包含日期和时间:

set _my_datetime=%date:~-4%_%date:~4,2%_%date:~7,2%_%time:~0,2%_%time:~3,2%_%time:~6,2%_%time:~9,2%_
set _my_datetime=%_my_datetime: =_%
set _my_datetime=%_my_datetime::=%
set _my_datetime=%_my_datetime:/=_%
set _my_datetime=%_my_datetime:.=_%
echo %_my_datetime%
mysqldump --opt --host=localhost --user=root --password=yourpassword dbname | 7z a -si C:\some_folder\backup_with_datetime_%_my_datetime%_dbname.7z

答案 1 :(得分:1)

@Drew意味着使用cronjob。要添加一个cronjon,只需使用以下命令启动crontab:

crontab -e

在最后添加一个新条目,如下所示:

0 0 * * * mysqldump -u username -ppassword databasename > /path/to/file.sql

这将每天00:00执行数据库转储

答案 2 :(得分:1)

是编程调度程序运行这样的东西:

C:/path/to/mysqldump.exe -u username -ppassword databasename> /path/to/file.sql