最新消息:欢迎投稿,题材不限,内容需健康向上。点击右上角的订阅,更新后第一时间mail通知你!

SAE数据库定时备份

博客相关 越读者 207浏览 0评论

mysql

下面讲一下怎么使用SAE平台的Cron服务进行数据自动备份吧,数据无价,人的精力时间有限,现在希望的都是一切自动化。所以,首先想到的是Cron服务,可以按设定的时间规则自动进行相关任务。然后,再结合官方推荐使用的DeferredJob服务进行数据库备份,自然就解决问题了。可以新建一个php文件,如命名为:db_callback.php,使用DeferredJob进行数据导出,我的设置如下:

  /**  
  *  使用DeferredJob服务对数据库进行备份  
  *  结合Cron服务,实现定时备份  
  *  
  *  函数原型:  addTask($tasktype,$dbtype,$stor_domain,$stor_filename,$dbname,$tbname,$callback)  
  *  http://www.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次)

转载请注明:七厘米地遥望 » SAE数据库定时备份

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址