SAE上自动备份WordPress数据库

来源:互联网 发布:贵州电信网络测速 编辑:程序博客网 时间:2024/06/01 08:18

http://blog.gimhoy.com/archives/sae-wordpress-auto-backup-database.html

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



什么是Cron服务

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


实现方法

1.在根目录创建backup.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,可以自己修改,也可以到这里生成。
转自Gimhoy's Blog:http://blog.gimhoy.com/archives/sae-wordpress-auto-backup-database.html

0 0
原创粉丝点击