Web应用程序的合理备份策略

时间:2020-03-06 14:52:48  来源:igfitidea点击:

我正在做一个webapp,需要一个备份计划。到目前为止,这是我得到的:

  • 每晚将SQL数据库的加密备份备份到Amazon S3和我的外部驱动器(如果可能的话,进行增量备份,对PostgreSQL不太熟悉,但这是另一个线程)
  • 每晚将我的Mercurial存储库(包括Apache配置,部署脚本等)备份到S3(带有通过Time Machine的本地备份)

我应该添加其他内容,还是可以覆盖?为了衡量数据的重要性,它是Basecamp的项目管理应用程序。

解决方案

每周对数据库进行一次完整备份,以及每晚对数据库进行一次增量备份?

这意味着,如果旧增量备份之一损坏了,那么我们丢失的数据不到一周。

另外,请确保我们有一个备份测试计划,以确保备份工作正常。关于此事,有很多恐怖故事发生了,这些公司已经进行了多年备份,从未进行过备份测试,然后发现一旦需要它们便没有任何好处。 (我也曾在这样的公司工作过。值得庆幸的是,我发现在需要备份之前,备份无法正常工作并解决了问题)。

过去对我有用的最佳策略之一是使"备份"过程与安装过程相同,即我们在linux中完全编写了服务器配置,应用程序创建,数据库设置等脚本,因此进行安装看起来像:

./install.sh [服务器] [应用程序名称]
和备份/恢复
./install [服务器] [应用程序名称]-数据库[数据库备份文件]

在备份方面,数据库由cronjob完全备份(MySQL数据库)

这几乎可以确保每次部署新实例时都对恢复进行测试,并且在需要更换硬件或者给定服务器从客户那里获得过多负载时,脚本最终还可以用于移动实例。

这是几年前我工作的Saas企业应用程序的设置,因此我们可以完全控制服务器。

我希望我们可以从增量备份转换为差分备份。如果有增量备份,则必须每周应用一次完整备份,然后再应用每个增量备份。如果增量备份之一在本周初失败,那么所有后续备份也将失败。

但是,如果使用差异,则每个差异都包含自上次备份以来的所有更改。因此,即使其中一个备份在本周早些时候失败,但如果最近备份成功,我们仍然可以完全恢复。

我希望我能很好地解释这一点!

:)