Google Datastore 备份导致错误

Google Datastore 备份导致错误

我们正在通过 cron 为我们的 Google Datastore 文档执行备份,具体如下:这里。数据库约 55GB(包括索引),我们每 24 小时进行一次完整备份。我们保存到的存储桶属于另一个项目。

备份成功,我们可以毫无问题地将它们恢复到我们的暂存环境中!

尽管如此,我们发现备份运行时出现了很多错误。错误来自模块ah-builtin-python-bundle,错误消息是Request was aborted after waiting too long to attempt to service your request.这导致我们的监控向我们发出警报(我们的阈值为 3 分钟内每秒 1.5 个错误)。

显然,我们希望消除这些错误,以避免在我们的监控中出现误报。

答案1

备份会启动 MapReduce 作业,然后将其分解为推送任务。这些任务在等待队列中等待时偶尔会超时并被重试,这很正常,会导致Request was aborted after waiting too long to attempt to service your request日志中出现“ ”错误。

如果看到这些错误是一个问题,你可以尝试通过调整你的队列或者扩展参数。

答案2

我知道这篇文章有点老了,但我会在这里留下一些有趣的文档,你可能会发现它们对新建议的方法有帮助使用 App Engine 在 Cloud Datastore 中安排导出。我猜你的问题仍然无法重现,所以我建议任何阅读这篇文章的人最好使用这个新的云平台功能。

请务必参考上一个链接以获取详细说明(并更新,因为截至撰写本文时,此功能处于测试版并且可能会改变),但下面我将总结使用 chron 和 App Engine 从 Cloud Datastore 安排导出的主要步骤:

  1. 在与 Datastore 相同的位置创建一个 Cloud Storage 存储桶。
  2. 分配云数据存储导入导出管理员角色到您的 App Engine 默认服务帐户(看起来应该是这样的) [电子邮件保护])。
  3. 将存储桶的写入权限分配给 App Engine 默认服务帐号。
  4. 创建一个新的本地文件夹,其中包含文件app.yaml(App Engine 配置)、cloud_datastore_admin.py(App Engine 应用程序本身)和cron.yaml(cron 作业),并使用我在一开始分享的链接中的内容填充它们,确保替换任何必需的内容以匹配资源的命名。同时编辑计划任务配置文件,以便根据您的要求设置适当的导出策略。
  5. 设置好应用程序的完整配置后,请部署它(包括计划任务作业),对其进行测试并在 Cloud Storage 存储桶中查看您的导出内容。

相关内容