【问题标题】:App Engine Datastore: Can I restore entities of a specific namespace from a full backup?App Engine Datastore:我可以从完整备份中恢复特定命名空间的实体吗?
【发布时间】:2017-06-21 04:11:26
【问题描述】:

我使用 Google Cloud Datastore Admin 创建了所有命名空间的所有实体的备份。

我想问我是否可以只在命名空间上恢复实体。

示例:我有 3 个命名空间

  • 命名空间_1
  • 命名空间_2
  • 命名空间_3

所有命名空间都包含相同的实体类型,比如 MyEntityKind

我只想从我的完整备份中恢复 Namespace_3.MyEntityKind

我该怎么做?在 Datastore Admin 中,我在进行恢复时只能选择种类而不能选择命名空间。

谢谢

【问题讨论】:

  • 我不确定,但您的问题的一个可能解决方案是它可能无关紧要。备份功能的方式是它将用备份的数据覆盖任何现有实体,如果它们不存在则创建它们。如果数据存储中的实体不在备份中,则它们将保持不变。因此,如果您从未编辑过您的数据存储数据,并且您唯一担心的是丢失自备份以来创建的新实体,那么您可以继续从备份中恢复,并且您不会丢失自使用备份。

标签: google-app-engine google-cloud-datastore backup restore datastore-admin


【解决方案1】:

概述

Datastore Admin 备份正在逐步淘汰,因此使用新的 managed exports 功能,尽管适用相同的原则。

创建一个新项目,我们称之为staging。将完整备份导入staging。从staging 为您想要的命名空间或种类创建一个新的导出。将此新导出导入您的原始项目。

命令

在新系统中的完全导出是这样实现的:

gcloud datastore export gs://${BUCKET}

这样导出时,没有直接的方法来导入选定的部分,所以你需要切换项目,然后将它导入一个临时项目。导入命令很简单:

gcloud datastore import gs://${BUCKET}/[PATH]/[FILE].overall_export_metadata

[PATH] 可以从导出命令的结果中找到,或者在控制台中浏览您的 Cloud Stage 存储桶。 [FILE] 与 [PATH] 相同,但您可以在 UI 中确认。

现在,从staging project 中导出您想要的命名空间:

gcloud datastore export --namespaces="Namespace_3" gs://${BUCKET}

您现在有了一个只包含所需命名空间的导出,并且可以将其导入回原始项目。

【讨论】:

  • Re:从备份中恢复(又名导入),有没有办法只导入某些实体类型?只需阅读docs,看起来我们可以选择某些种类进行导出,但不能选择导入......
  • @xiaolong 看来 Datastore Admin API importmethod 接受 entityFilter 参数。我没有测试过这个功能。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-03-02
  • 1970-01-01
  • 2023-01-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多