Gimhoy's Blog

[文章目录]

您曾经浏览过

SAE上自动备份WordPress数据库

本文最后更新于2013年8月8日,已超过三年没有更新,如果文章内容失效,请反馈给我们,谢谢!

WordPress博客放到SAE上之后,原来一直在用的备份插件不能用了,也懒得去移植。发现可以直接用SAE的Cron服务实现数据库的备份,简单粗暴。。

 

什么是Cron服务

Cron服务是SAE为开发者提供的分布式定时服务,用来定时触发开发者的特定动作,满足比如定时计算排行榜等需求。Cron的设置是通过App的config.yaml来实现的,只要用户在App目录下的config.yaml里按照我们的提供的语法格式进行配置,部署后就能生效。Cron的执行是以HTTP方式触发的,触发后真正执行的是用户在App中的PHP代码。Cron服务是分布式环境部署的,具有高可靠性,多点之间相互隔离且同时触发,并且通过分布式锁进行选举并最终由一个健康节点执行。

 

实现方法

1.在根目录创建backup.php,内容如下:

<?php
/**
 * database backup for sae wordpress
 * code by Gimhoy (http://blog.gimhoy.com)
 */
$stor = new SaeStorage();
$attr = array('private'=>false);
$ret = $stor->setDomainAttr("wordpress", $attr); //必须为公有domain
$date = date('Y-m-d');
$dj = new SaeDeferredJob();
$taskID = $dj->addTask("export","mysql","wordpress","dbBackup/$date.sql.zip",SAE_MYSQL_DB,"","");
if($taskID===false){
	var_dump($dj->errno(), $dj->errmsg());
	$mail = new SaeMail();
	$ret = $mail->quickSend( '收件邮箱' , '数据库备份失败' , '数据库备份失败 errno:'.$dj->errno().' errmsg:'.$dj->errmsg(), '发件邮箱' , '发件邮箱密码' );  //邮箱通知
}else{
var_dump($taskID);
}
$attr = array('private'=>true);
$ret = $stor->setDomainAttr("wordpress", $attr); //设置domain为private,保护数据
?>

关于addTask()参数的一些说明:第三个参数为Storage的Domain,第四个为保存的文件名,第五个为当前SAE应用的数据库名。
Domain不能为私有且不能设置防盗链。

2.在config.yaml中增加以下代码:

  - hostaccess: if(path == "/backup.php") allow "10.0.0.0/8"
cron:
    - description: Backup
    url: /backup.php
    schedule: every day of month 03:00

说明:
1.- hostaccess: if(path == "/backup.php") allow "10.0.0.0/8"是只允许Cron服务访问backup.php
2.schedule: every day of month 03:00是每天3点执行一次Cron,可以自己修改,也可以到这里生成。



免费获得每月10G空间+10G免费流量
No tags
  • Comment (6)
  • Trackback (1)
  • woweenGoogle ChromeWindowsChina2013/10/03 05:43@Ta

    是我需要的功能

    #5
  • nikboboSafariiPodChina2013/09/16 12:16@Ta

    弄一个BAE的别。

    #4
  • 残雪Google ChromeWindowsChina2013/08/11 10:32@Ta

    【此处为悄悄话】

    #3
  • cailmanMozilla FirefoxWindowsChina2013/08/09 14:52@Ta

    这个功能用了大半年了,除了不能单独备份某几个表,其它的算很满意。

    #2
    • GimhoyGoogle ChromeWindowsChina2013/08/09 15:20@Ta

      可以实现啊~自己改一下就行

  • 麦田一根葱Google ChromeWindowsChina2013/08/09 11:50@Ta

    这个不错,赞一个先~ 上午11:50:37

    #1