SAE数据库定时备份

mysql

下面讲一下怎么使用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次)