SAE数据库定时备份 发表于 2014-12-21 更新于 2024-09-20 分类于 博客相关 下面讲一下怎么使用SAE平台的Cron服务进行数据自动备份吧,数据无价,人的精力时间有限,现在希望的都是一切自动化。所以,首先想到的是Cron服务,可以按设定的时间规则自动进行相关任务。然后,再结合官方推荐使用的DeferredJob服务进行数据库备份,自然就解决问题了。可以新建一个php文件,如命名为:db_callback.php,使用DeferredJob进行数据导出,我的设置如下: /** * 使用DeferredJob服务对数据库进行备份 * 结合Cron服务,实现定时备份 * * 函数原型: addTask($tasktype,$dbtype,$stor_domain,$stor_filename,$dbname,$tbname,$callback) * https://fairydevil.com/sae-scheduled-backup-database/ */ $stor_domain = “yovisun”;//Storage的存放域 $file_path = “/db_backup/“;//文件路径 $file_name = date(‘YmdHis’).”.sql.zip”;//以当前的时间日期为文件名 $stor_filename = $file_path .$file_name;//完整的文件名(含路径) $dbname = SAE_MYSQL_DB; //数据库名 $dj = new SaeDeferredJob(); $taskID = $dj->addTask(“export”, “mysql”, $stor_domain, $stor_filename, $dbname, null, null); if($taskID===false){ var_dump($dj->errno(), $dj->errmsg()); }else{ var_dump($taskID); }这样就可以进行数据的导出,当然,请先创建相应的Storage,保证目录正确。接下来就是在config.yaml文件中设置Cron任务,可以根据自己的需要设计,具体语法可以参考官网的文档。我的设置如下: handle: - passwdaccess: if(path ~ "db_backup/db_callback.php") passwd "user:passwd" cron: - description: SAE database backup url: db_backup/db_callback.php schedule: every day of month 04:00 login: user@passwd 这样,在每天凌晨的4点就会进行自动备份。OK,完工,去Storage看看吧,所有的备份数据均在那里,是不是心里踏实了许多。(温馨提示:目前DeferredJob每天只能执行10次)