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

SAE 数据库完美备份(自动备份 + 发送邮件 + 数量可控)

网络技巧 2749浏览 0评论

这是一篇首发在 SAE 云计算平台开发者论坛的文章,主要目的就是在通过 SAE 高级开发者认证后,用来申请新浪微博加 V。按照目前的 SAE 申请微博加 V 要求,只要同时满足下面两条,加 V 就手到擒来。

1. 通过 SAE 中级,高级开发者认证。
2. 在 SAE 社区发布一篇原创的文章被加为精华帖。

本篇文章下午发表在 SAE 开发者论坛后,很快就被版主加精了,以下是当时发表的文章内容,稍有修改。

sae-datebase-backup

在 7 月 9 号通过中级开发者认证后,16 号又通过了高级认证,终于有免费的云豆用了,便迫不及待的将原来一个用 EMlog 搭建的博客移植到了 SAE 上来,但不论你在哪里,备份都需要滴。

原来博客的数据是用插件备份的,移植过来后,却没有发现一个完美的数据备份方法,我所说的完美,要求也不高,就是能够实现以下三点:(1)定时自动备份;(2)备份内容发送邮件附件;(3)存储到服务器上的备份数量可控。第一点是基本需求,第二点是防患未然,第三点是个人喜好,不然一天一个备份,一年下来都好几百了,看着碍眼、放着无用且浪费资源。最后,既然网上没找到完全中意的方法,就参考着文档和搜索到的一些信息摸索着实现了,和大家分享下。

1、在需要备份的应用里面创建一个单独用于存储备份的 Storage,命名随意,比如:dbbackup;

2、在网站代码的任意目录下新建一个 php 文件,命名随意,比如 dbbackup.php,内容就不能随意了,需根据情况修改,参考下面:

其中第一部分的宏定义是需要根据实际情况修改的,主要是 storage、路径和邮箱的设置,具体内容可以参考代码里面的对应说明。这里假设的是将数据文件备份到一个叫 dbbackup 的 storage 中的 backup 文件夹里,并且只保留最新的 20 个备份;邮件部分则是在执行备份时将最新的数据备份文件发送到你的设定邮箱里,测试中我用的发送邮箱是 163 的,接收邮箱是 126 的。需要说明的是,测试时 SAE 的邮件服务不是很稳定,有时可能会收不到邮件,并且邮件发送的附件大小限制在 1M 以内,不支持 zip 的文件后缀,所以你的数据备份文件不超过 1M 时可以完美的使用本方法,超过的话附件就接收不到了,正常接收到的附件名字类似:db-2014-07-22.sql.zip.txt,下载下来后将.txt 去掉即可。

3、在网站代码根目录的 config.yaml 文件中添加一个 cron 任务,让备份可以自动定时执行:

代码里需替换下正确的目录名字;schedule: every day of month 03:00 表示每天凌晨 3 点开始自动备份,如果发现收不到邮件,很可能是被邮箱判断为垃圾邮件或者被系统退信了,毕竟没有几个人会在凌晨 3 点发邮件的,这时只要把 03:00 改成其他的时间(比如 23:30)就可以;想更改成每周或每月等等时间备份的可以通过 Cron 配置生成工具生成后替换修改:http://saetools.sinaapp.com/cron.html

另外,由于备份中用的了 DeferredJob,并且 SAE 限制 DeferredJob 每天只能添加 10 个任务,所以有了这一条:

它表示只允许内网访问 dbbackup.php 文件,这样就可以让 Cron 服务正常运行并且有效防止了外部的无意或恶意点击,当然,你也可以将自己的 IP 添加进去测试用,不然直接访问是会 403 Forbidden 的,修改可以用 Appconfig 配置生成工具:http://saetools.sinaapp.com/appconfig.html

2014 年 10 月 19 日,更新更完善的备份方法:SAE 数据库完美备份加强版


欢迎转载,转载请注明出处:蔓草札记 » SAE 数据库完美备份(自动备份 + 发送邮件 + 数量可控)

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

表情

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

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