如何准备生产网站中的数据丢失?

ssc*_*rus 16 backup ruby-on-rails heroku data-loss ruby-on-rails-3

我正在构建一个快速投入生产的应用程序,我担心由于黑客,一些愚蠢的个人错误(如运行rake db:schema:loadrake db:rollback)或其他情况,我们可能会在一个数据库表甚至整个系统中遭受数据丢失.

虽然我发现上述情况不太可能发生,但如果没有做好准备,我将会失职.

我正在使用Heroku的PG备份(本月将替换为其他内容),我还将自动每日备份运行到S3:http://trevorturk.com/2010/04/14/automated-heroku-backups/,成功生成.dump文件.

处理生产应用程序数据丢失的正确方法是什么?

  1. .dump如果需要,我该如何恢复文件?如果系统的一小部分被击中,我可以进行选择性恢复吗?
  2. 如果无法进行选择性还原:假设一个表在上次备份后4小时丢失数据.Result =>修复丢失的表需要回滚4个小时的用户活动吗?对此有什么好的解决方案?
  3. 如果发生这样的事情,支持用户的最佳方法是什么?

Ela*_*lad 6

完整的DR(灾难恢复)解决方案需要以下内容:

  1. 多站点.如果火灾,洪水,奥萨马·本·拉登或者什么叫做Heroku使用的亚马逊(或者是Salesforce?)数据中心,您希望确保您的数据在其他地方是安全的.
  2. 正在将数据复制到单独的站点(或多个站点).这意味着在一个站点上写入数据库的每个事务都会在几秒钟内复制到另一个站点上的镜像数据库.大多数RDBMS都有机制让你像这样进行主从复制.
  3. 这同样适用于任何你把一个文件系统的数据库之外,如图像,XML配置文件等S3这里是一个很好的解决方案 - 他们复制的一切为你多个数据中心.
  4. 创建数据库的周期性(每日左右)转储并单独存储(例如在S3上),我不会受到伤害.这有助于您从传播到从DB的数据损坏中恢复.
  5. 自动化数据恢复过程.您希望这在您需要时才能正常工作.
  6. 测试一切.理想情况下,您希望自动执行测试过程并定期运行它以确保备份可以恢复.Netflix Chaos Monkey就是一个极端的例子.

我不确定你是如何在Heroku上实现这一切的.一个完整的解决方案价格仍然遥不可及大多数公司 - 我们在我们自己的数据中心(一个在美国,一个在欧盟)运行此,它的成本数以百万计.根据80-20规则工作 - 正在进行备份到一个单独的网站,再加上行之有效的恢复计划(连续测试从备份中恢复的能力),占地面积你所需要的80%.

至于支持用户,最好的解决方案就是在发生故障时及时,真实地进行通信,并确保不丢失任何数据.如果您的用户为您的服务付费(即您不支持广告),那么您应该有一个SLA.

  • @sscirrus我明白了 - 过去我自己经常会经营一家小型创业公司.我认为你的下一步应该是#5,然后#6变得轻而易举.在任何情况下,创业公司都有很多失败的方法,而且数据丢失并不是最常见的方式,所以我会优先考虑构建一些产生足够价值的东西,以便在一开始就值得保护:) (2认同)