【问题标题】:Back up AppEngine database (Google cloud storage?)备份 AppEngine 数据库(谷歌云存储?)
【发布时间】:2011-10-12 22:44:47
【问题描述】:

我有一个 AppEngine 应用程序,目前有大约 15GB 的数据,在我看来,使用当前的 AppEngine 批量加载器工具来备份这种大小的数据集是不切实际的。因此,我开始研究其他备份方式,并有兴趣了解人们可能用于备份其 AppEngine 数据的实用解决方案。

顺便说一句,我开始认为 Google Cloud Storage 可能是一个不错的选择。我很想知道是否有人有使用谷歌云存储作为其 AppEngine 数据备份的经验,以及他们的经验,以及在走这条路之前是否有任何我应该注意的指针或事情。

无论我最终采用哪种解决方案,我都希望有一个满足以下要求的备份解决方案:

1) 备份速度相当快,恢复速度也相当快(即,如果我的网站发生严重错误/数据删除/恶意攻击,我不想在恢复数据库时将其关闭数天- 快速我的意思是几个小时,而不是几天)。

2) 来自我的 AppEngine 数据的单独位置和帐户 - 即。我不希望对我的 AppEngine 数据具有管理员访问权限的人必须拥有对备份数据位置的写入/删除权限 - 例如,如果我的 AppEngine 帐户被黑客入侵,或者心怀不满的员工决定删除我的所有数据,我希望有独立于 AppEngine 管理员帐户的备份。

总而言之,鉴于从云中获取数据似乎很慢/很痛苦,我想要一个基于云的备份解决方案,它可以模拟过去磁带备份所扮演的角色 - 如果我有的话备份磁带,没有其他人可以修改该磁带的内容 - 但由于我无法获得磁带,我可以将我的数据的安全副本存储在某个地方,只有我可以访问吗?

亲切的问候 亚历山大

【问题讨论】:

    标签: database google-app-engine backup cloud storage


    【解决方案1】:

    这里有几个选项,但没有一个(目前)完全符合您的要求。

    随着 SDK 的 1.5.5 版的最新版本,我们现在支持直接与 Google Storage 交互 - 你可以看到如何,here。有了这个,您可以将数据写入 Google 存储,但据我所知,没有办法写入应用程序将无法删除的文件。

    要实际收集数据,您可以使用App Engine mapreduce API。它内置了对写入 App Engine blobstore 的支持;目前,写入 Google Storage 需要您实现自己的输出编写器。

    正如 WoLpH 建议的那样,另一种选择是使用 Datastore Admin 工具将数据备份到另一个应用程序。通过一些额外的努力,您可以修改 remote_api 存根以禁止删除目标(备份)应用程序。

    无论如何,您绝对应该做的一件事是为您的 Google 帐户发送 enable two-factor authentication;这使得任何人都更难控制您的帐户,即使他们发现了您的密码。

    【讨论】:

      【解决方案2】:

      bulkloader 可能是备份/恢复数据的最快方式之一。

      AppEngine 的问题是您必须通过视图来完成所有操作。所以你有视图的限制......结果是快速备份/恢复仍然必须使用与应用程序其余部分相同的 API。所以bulkloader(可能有一些修改)绝对是你最好的选择。

      也许...(还没有尝试过),您可以使用新的 Datastore Admin 将数据复制到另一个应用程序。一个只有你能控制的。这样您就可以在需要时将其从其他应用中复制回来。

      【讨论】:

      • 您有关于备份大型数据集的批量加载程序速度的任何指标吗?我的经验是,备份 15GB 的数据需要很多天。
      • @AlexanderMarquardt:根据我的经验。如果你给它足够多的线程,你可以在 30 分钟内上传 ~1GB,但是bulkloader 往往会因为这么多的数据和线程而崩溃。所以我认为没有现成可用的好的解决方案。
      猜你喜欢
      • 2020-04-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-17
      相关资源
      最近更新 更多