2011-02-25 59 views
24

我最近部署了几个使用django构建的web应用程序(在webfaction上)。 这些将是我正在开发的这个规模的第一批项目中的一部分,所以我想知道有效的备份策略是在webfaction和备用位置上维护备份。django的备份策略

编辑:

我想备份什么?

数据库和用户上传的媒体。 (我的代码通过git管理)

回答

14

我不确定是否有一个适合所有的答案尤其是因为你没有说什么你打算备份。我通常的MO:

  • 源代码:使用源代码控制,如svn或git。这意味着您通常会:代码的开发,部署和存储库备份(特别是在drsc中)。
  • 数据库:这也取决于使用,但通常:
    • 拥有dump_database.py管理命令,将反思的设置和每个dB的输出正确的数据库转储命令(考虑到DB型和也数据库名称)。
    • 有通过ssh到应用服务器连接另一台服务器在cron作业,执行转储数据库管理命令,焦油与数据库名称+时间戳作为文件名,并将其上传到另一台服务器的SQL文件(亚马逊s3在我的情况)。
  • 媒体文件:例如用户上传。在另一台可以ssh进入应用程序服务器并将rsync调用到另一台服务器的服务器上保留cron作业。

但要记住的是,备份的目的是什么。 如果它是偶然的(无论是磁盘故障,错误还是sql注入)数据丢失或者只是恢复,您可以将这些cron作业保留在同一台服务器上。

如果您还希望在服务器遭到破坏的情况下安全起见,则无法在应用程序服务器上保留远程备份凭据(sshkeys,amazon secret等)!否则攻击者将获得对备份服务器的访问权限。

+2

而不是dump_database.py我建议使用你的数据库的转储工具,例如, mysqldump的。非常简单,适用于任何一套Django模型,降低维护成本。我同意你的答案。 – 2011-02-26 00:09:00

+4

对不起,我想我不清楚,我的意思是你可以编写自己的转储数据库,可以反省设置并生成一个数据库不可知的命令 – 2011-02-26 12:41:44