数据存储区管理员

Datastore 模式 Firestore 以前支持启用 Datastore Admin,这是一个带有批量删除和备份功能的可选模块。Datastore Admin 已被更加可靠的替代方案取代:

如果您之前启用了 Datastore Admin,则可以继续使用该模块。如果您停用 Datastore Admin,则将无法重新启用该模块。

关于使用 Datastore Admin 功能时的注意事项

  • 对于复制、删除、备份,可能不会考虑最近的更新。
  • 所有 Datastore Admin 操作都发生在您的应用内,因此会计入您的配额
  • 我们强烈建议您在备份或恢复期间停用写入
  • 具有相同键的现有实体将在复制/恢复操作期间被覆盖。即使执行多次复制/恢复操作,也不会产生副本。复制/恢复操作不会删除额外的数据。
  • 如果您使用非默认队列进行备份/恢复,则只能在 queue.yaml 中指定目标 ah-builtin-python-bundle。您不能使用其他目标。

数据库访问权限

默认情况下,Datastore Admin 可以访问同一项目中的 Datastore 数据库,并且不需要 Datastore 的 Identity and Access Management 权限

备份数据

请按照以下步骤创建备份文件,用于数据导出或将来需要恢复数据时使用。

  1. 如果您还没有为项目创建存储分区,请先创建。或者,通过访问控制列表来检查项目的 App Engine 默认服务帐号是否可以访问存储分区。默认情况下可能已经进行了此项设置,可以在需要时予以替换。

  2. (推荐)停用 Cloud Datastore 写入

  3. 转到管理页面。

    转到“管理”页面

  4. 点击打开 Datastore 管理

  5. 选择您希望备份的实体种类。

  6. 点击备份实体以显示备份表单。

  7. 注意,此时将提供一个备份名称,其中包含一个日期戳。

    如果每天要执行多次备份,则必须更改此值,因为如果已存在同名备份,则不会执行备份。

  8. 请注意,备份作业会使用默认队列;在大多数情况下,您都可以使用此默认队列。

    如果您使用非默认队列进行备份/恢复,则只能在 queue.yaml 中指定目标 ah-builtin-python-bundle。您不能使用其他目标。

  9. 选择 Google Cloud Storage 作为备份存储位置。

  10. 选择 Cloud Storage 后,系统会提示您输入存储备份的存储分区名称,格式为 [BUCKET_NAME]。您可以视需要指定带有目录结构后缀的存储分区名称,例如 [BUCKET_NAME]/backups/foo。如果这些文件夹尚不存在,则系统会予以创建。

  11. 点击备份实体启动备份作业。请注意,此时会显示作业状态页面。备份作业状态

  12. 点击返回 Datastore 管理,以查看备份状态。

  13. 备份完成后,如果您停用了 Cloud Datastore 写入,请重新启用

备份和恢复注意事项

备份和恢复功能旨在帮助您导出数据,或恢复意外删除的数据。您可以备份所有实体,或者仅备份指定种类的实体,并且可以根据需要从其中某个备份中恢复。

备份会保存到 Cloud Storage。

请注意,备份不包含任何索引。在恢复时,将使用您随应用一同上传的索引定义来自动重建所需索引。

您还可以使用备份文件将数据导出到其他 Google Cloud 服务,例如 BigQuery

恢复不会为实体分配新 ID。恢复会使用备份时存在的 ID,并覆盖具有相同 ID 的任何现有实体。在恢复过程中,正在恢复的实体的 ID 将被预留。这样哪怕在恢复过程中启用了写入,也可以防止与新实体的 ID 产生冲突。自备份以来添加的新实体会被预留。

您可以从备份中恢复所有数据,也可以从备份中恢复特定的实体种类。此外,只要您使用 Cloud Storage 进行备份,您还可以使用此功能,将一个应用的数据备份恢复到其他某个应用。

取消备份

如果备份作业当前正在运行,它们将显示在 Cloud Datastore 管理界面的待处理备份列表中。

要停止这些正在运行的备份,请执行以下操作:

  1. 转到管理页面。

    转到“管理”页面

  2. 点击打开 Datastore 管理

  3. Pending Backups 部分中,从列表中选择备份并点击 Abort

取消备份作业时,App Engine 会尝试删除迄今为止已保存的备份数据。但在某些情况下,取消之后仍会保留一些文件。您可以在 Google Cloud Storage 的备份路径中找到这些文件,并在取消作业完成后将其安全地删除。这些文件的名称均以如下格式开头:datastore_backup_[BUCKET_NAME]

查找备份的相关信息

您可能希望查找备份的相关详细信息,例如其中包含哪些实体种类、在 Google Cloud Storage 中的保存位置及其开始和结束的时间。要显示此类备份信息,请执行以下操作:

  1. 转到管理页面。

    转到“管理”页面

  2. 点击打开 Datastore 管理

  3. 备份待处理备份列表中选择一个或多个备份。

  4. 点击信息显示这些备份的相关信息。

  5. 点击返回,回到 Cloud Datastore 的“管理”界面。

恢复数据

要利用备份进行恢复,请执行以下操作:

  1. (推荐)为您的应用停用 Cloud Datastore 写入。这样做可以避免恢复的数据与写入到 Cloud Datastore 的任何新数据之间发生冲突。
  2. 转到管理页面。

    转到“管理”页面

  3. 点击打开 Datastore 管理

  4. 在可用备份列表中,选择要恢复的备份。

  5. 点击 Restore

  6. 在显示的咨询页面中,注意带有复选框的实体列表。默认情况下,所有实体都将被恢复。取消选中您不想恢复的各实体旁边的复选框。

  7. 同样在咨询页面中,请注意,恢复作业将使用默认队列及其预配置的性能设置。如果您需要不同的队列性能特征,请将其更改为采用不同配置的其他队列,并确保所选队列没有在 queue.yaml 中指定除 ah-builtin-python-bundle 以外的任何目标。

  8. 点击恢复开始恢复。请注意,此时会显示作业状态页面。

  9. 点击返回 Datastore Admin,以查看恢复的状态。恢复状态

  10. 恢复完成后,如果停用了写入,请为您的应用重新启用 Cloud Datastore 写入

将数据恢复到其他应用

如果您使用 Google Cloud Storage 备份数据,则可以将备份恢复到原本用于创建备份的应用以外的其他应用。

将来自源应用的备份数据恢复到目标应用:

  1. 使用以下权限在源应用的存储分区上创建 Identity and Access Management (IAM) 政策

    • 成员:[PROJECT_ID]@appspot.gserviceaccount.com
    • 角色Storage Legacy Bucket ReaderStorage Legacy Object Reader

    其中 [PROJECT_ID] 是目标应用的项目 ID。

  2. 在源应用中创建一个新备份

  3. (推荐)为您的目标应用停用 Cloud Datastore 写入,以避免恢复的数据与写入 Cloud Datastore 的任何新数据之间发生冲突。

  4. 转到目标应用的管理页面。

    转到“管理”页面

  5. 点击打开 Datastore 管理

  6. 导入备份信息 (Import Backup Information) 按钮旁边的文本框中,以 /gs/[BUCKET_NAME] 的格式指定包含备份的源应用存储分区。备份存储分区
    或者,为特定备份提供文件句柄:要查看备份的文件句柄,请打开源应用的管理页面,选择备份,然后点击信息。您应该会在句柄标签旁边看到文件句柄。

  7. 点击导入备份信息
    除非您按句柄指定备份,否则出现的选择页面将显示您所指定存储分区的可用备份。选择所需备份并点击以下选项之一:

    • 如果希望将此备份保留在应用的可用备份列表中,请点击 Add to backup list
    • 如果要从此备份中进行恢复,但不希望将备份显示在应用的可用备份列表中,请点击 Restore from backup
  8. 在显示的咨询页面中,注意带有复选框的实体列表。默认情况下,所有实体都将被恢复。取消选中您不想恢复的各实体旁边的复选框。

  9. 同样在咨询页面中,请注意,恢复作业将使用默认队列及其预配置的性能设置。如果您需要不同的队列性能特征,请将其更改为您已经采用不同方式配置的另一个队列。

  10. 点击 Restore 开始恢复。请注意,此时会显示作业状态页面。

  11. 恢复完成后,如果您停用了 Cloud Datastore 写入,请重新启用

查看资源使用情况

高度频繁的备份往往会导致成本增加。当您运行 Cloud Datastore 管理作业时,您实际上运行的是底层 MapReduce 作业。MapReduce 作业会导致 Storage 操作和 Storage 使用情况基础上的前端实例使用小时数增加。

如需查看您的资源使用情况,请执行以下操作:

  1. 访问 Cloud Console App Engine 页面。

    转到 App Engine 页面

  2. 使用页面顶部的下拉菜单选择 default 服务和 ah-builtin-python-bundle 版本。

启用或停用数据库写入

在恢复之前,通常建议停用写入。这有助于避免恢复操作与写入到数据库的任何新数据之间发生冲突。

停用写入可防止通过以下方式更改实体

  • Datastore 查看器。
  • 使用 Datastore API 的应用。

如需启用或停用写入,请执行以下操作:

  1. 转到管理页面。

    转到“管理”页面

  2. 点击启用写入以启用写入,或点击停用写入以停用写入。根据项目的状态,按钮文本会有所不同。

查看 Datastore Admin 资源使用情况

当您运行 Datastore Admin 作业时,您实际上运行的是底层 MapReduce 作业。MapReduce 作业不但会产生 Storage 操作和 Storage 用量,还会增加前端实例小时数。

如需查看您的资源使用情况,请执行以下操作:

  1. 访问 Cloud Console App Engine 页面。

    转到 App Engine 页面

  2. 使用页面顶部的下拉菜单选择 default 服务和 ah-builtin-python-bundle 版本。

停用 Datastore Admin 访问权限:

  1. 转到管理页面。

    转到“管理”页面

  2. 点击停用 Datastore Admin