最新消息:蔓草札记的微信公众号开通了,赶紧在微信通讯录公众号中搜索“蔓草札记”关注下吧 :)

SAE数据库完美备份加强版

网络技巧 xhhjin 5866浏览 16评论

之前写了一篇关于 SAE 数据备份的文章《SAE 数据库完美备份(自动备份 + 发送邮件 + 数量可控)》,后来有一些网友留言,对该方法提出了一些可以完善的地方。主要有三个方面,下面会分别说明,经过完善后的文件复杂了些,不像之前一个文件就搞定了。在试用了一两个月后,没有发现什么问题,今天整理整理发出来供大家参考。

SAE 数据库完美备份加强版

首先,SAE 自带的 SaeMail 限制比较多,不但附件有 1M 的大小限制,而且无法直接将 zip 文件发送邮箱,而通过第三方的类来发邮件,可以很好的解决这两个问题,这里用的是网友推荐的《简易的 SMTP 邮件发送类》, 经试验可以直接发送带附件名为 zip 的邮件,并且附件大小没有限制。其次,PHP 脚本执行有时间限制,如果在时间限制到了,备份任务还没完成的话,之前的备份脚本就会死在 28 到 30 行么,这个可以通 Deferredjob 的 Callback 回调来解决。最后就是发送邮件邮箱的选择,个人邮箱很容易被当作垃圾邮件删除或退信,可以选择一些第三方邮件系统来处理,如邮大爷,SendCloud。其实,我在用网易系列邮箱的过程中,发现还可以将发送邮件加入到收信邮箱的白名单中(设置 -> 反垃圾 / 黑白名单 -> 白名单),这样刚开始或许会有些误判,后来都成功接收。

完善后的代码共有 4 个文件,比较多,就不贴源文件了,直接下载吧(点击下载,2015 年 4 月 27 日更新)。将下载后将文件夹放到代码路径下(文件夹名字可以自由修改),然后修改里面 db_config.php 中的配置,主要是邮箱和一些备份信息的设定;接着在网站代码根目录的 config.yaml 文件中添加一个 cron 任务,让备份可以自动定时执行:

cron:
- description: SAE database backup
  url: / 实际目录 /db_backup.php
  schedule: every day of month 03:00
handle:
- hostaccess: if( path ~ "/ 实际目录 /db_backup.php" ) allow "127.0.0.1 10.0.0.0/8"

注意:这次设置的hostaccess项和之前完美备份文章中的是不一样的。想了解设置的意义或手动修改的话,可以看之前的文章《SAE 数据库完美备份(自动备份 + 发送邮件 + 数量可控)》。

sae-mail-backup

到这里就配置完成了,接下来就是见证奇迹的时刻,Have Fun :)


欢迎转载,转载请注明出处:蔓草札记 » SAE数据库完美备份加强版

♥ 喜欢 0 赞赏
发表我的评论
取消评论

表情

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

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

网友最新评论 (16)

  1. 博主您好,我用了这个。貌似还是不行,callback失败。 differed job报错: job200408 ERROR: task Export anybfans-dbbackup/2014-10-26.sql.zip failed. call callback function error cron:执行成功 可是返回消息貌似出问题了。返回Moved Per、cron执行不能自动备份。前天手动执行一次所有正常,然后cron就不行了 。源代码没改,就改了邮箱设置 手动执行页面db_backup。php 可以备份成功,但是邮件貌似也不行
    Anybfans2年前 (2014-10-26)回复
  2. 再说一下。我教育网,访问您的网站需要翻墙,不知道是不是个例。
    Anybfans2年前 (2014-10-26)回复
    • @Anybfans 应该是个例,我在17ce上试了下,个别地方访问不到,有个也是教育网的。
      xhhjin博主2年前 (2014-10-26)回复
  3. 问题已经解决了,绑定了域名的时候.做rewrite要把备份目录加上去。例如 - rewrite: if(in_header["host"] ~ "^***.sinaapp.com" && path ~ "^(.*)" && path !~ "/sae_cron/") goto "http://www.****.com$1 [L,QSA,R=301]" 加上这个。立刻解决了。
    Anybfans2年前 (2014-10-26)回复
    • @Anybfans 厉害,自己解决了。我这边没有为绑定域名写这样的rewrite rule,所以没碰到过,不过话说在SAE上用绑定域名的话,没必要加这条rewrite吧?
      xhhjin博主2年前 (2014-10-26)回复
      • @xhhjin 我绑定域名之前 对外发布的是二级域名,现在启用了独立域名,所以用301重定向了一下。。
        Anybfans2年前 (2014-10-30)回复
  4. 大哥问题提示备份成功了 为什么收不到邮件 也看不到文件
    无心2年前 (2015-04-13)回复
    • @无心 查下垃圾邮件有没,再看看SAE上的日志中心有错误不。
      xhhjin博主2年前 (2015-04-14)回复
      • @xhhjin 备份失败的能收到 成功的收不到 能备份成功 文件也有就是收不到成功的邮件
        无心2年前 (2015-04-15)回复
        • @无心 是有这个情况了,回调函数出错导致的,我先在SAE论坛发帖问问看,可能是SAE本身的出了问题。 备份代码更新了下,你重新下载试试,我这边测试可以了,但还是有一定概率失败,不清楚原因。
          xhhjin博主2年前 (2015-04-18)回复
  5. 1、在需要备份的应用里面创建一个单独用于存储备份的Storage,命名随意,比如:dbbackup; 这条没有看明白,当初建立过emlog的Storage给博客用,还需要在重新建立一个吗? 2、在网站代码的任意目录下新建一个php文件,命名随意,比如dbbackup.php,内容就不能随意了,需根据情况修改,参考下面: 哪个网站代码下? 这两条还是没看明白,新手有点笨,希望能详细一些,想给emlog数据备份!
    Liangge1年前 (2015-06-22)回复
    • @Liangge #1,这里重新建立的,当然,你也可以使用emlog的;#2,指svn的路径,简单点就放到你的emlog svn根目录吧。
      xhhjin博主1年前 (2015-06-23)回复
      • @xhhjin 我太笨了 看的头痛 不搞了 有点搞不明白 谢谢你
        Liangge1年前 (2015-06-23)回复
        • @Liangge 都是这么过来的,刚开始嘛,用久了自然就好了。
          xhhjin博主1年前 (2015-06-23)回复
  6. 对了,emlog评论回复发到邮箱有sae版本的吗!
    Liangge1年前 (2015-06-22)回复