2011-10-12 161 views
10

我有目前大约有数据的15GB的AppEngine应用程式,并在我看来,这是不切实际的使用当前的AppEngine批量载入程序工具来备份数据集,这种规模的。因此,我开始调查其他备份方式,并且希望了解人们可能用于备份AppEngine数据的实际解决方案。备份的AppEngine数据库(谷歌云存储?)

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

无论我结束了它的解决方案,我想一个备份解决方案,以满足以下要求:

1)合理快速的备份,并合理地快速恢复(即如果一个严重的错误/数据删除/恶意攻击袭击了我的网站,我不想在恢复数据库的过程中将它关闭多天 - 我的意思是几小时,而不是几天)。

2)从我的应用服务引擎数据分开的位置和帐户 - 即我不想让管理员访问我的AppEngine数据的人必须拥有对备份数据位置的写入/删除访问权限 - 例如,如果我的AppEngine帐户被黑客入侵,或者如果某个心怀不满的员工决定删除我的所有数据,我想有备份是从AppEngine上管理员帐户分开。总之,从云中获取数据看起来很慢/很痛苦,我想要的是一个基于云的备份解决方案,模拟过去磁带备份的作用 - 如果我要有一个备份磁带,没有其他人可以修改该磁带的内容 - 但由于我无法获得磁带,我可以在任何地方存储我的数据的安全副本,只有我有权访问?

亲切的问候 亚历山大

回答

4

有几个选择这里,虽然没有被(目前)相当,你在找什么。

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

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

WoLpH建议的另一种选择是使用数据存储管理工具将数据备份到另一个应用程序。稍加额外的努力,您可以修改remote_api存根,以禁止删除目标(备份)应用程序。

您应该一定要做的一件事是不管您的Google帐户是否为enable two-factor authentication;这让任何人都难以控制您的账户,即使他们发现了您的密码。

1

的bulkloader可能是最快的方法来备份一个/恢复数据。

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

也许虽然...(有没有尝试过),你可以使用新的资料储存库管理员将数据复制到另一个应用程序。只有你控制的一个。这样,您可以在需要时从其他应用程序复制它。

+0

您是否有任何关于批量加载程序备份大型数据集的速度的指标?我的经验是,需要很多天才能备份15GB的数据。 –

+0

@AlexanderMarquardt:以我的经验。如果你给它足够多的线程,你可以在30分钟内上传〜1GB,但是bulkloader往往会因为那么多的数据和线程而崩溃。所以我不认为现成的解决方案有很好的解决方案。 – Wolph