Datastore 模式 Firestore 以前支持启用 Datastore Admin,这是一个带有批量删除和备份功能的可选模块。Datastore Admin 已被更加可靠的替代方案取代:
- 备份功能已被托管式导出和导入功能取代。
- 批量删除功能已被适用于 Dataflow 的批量删除实体模板取代。
访问 Datastore Admin
如果您之前启用了 Datastore Admin,则可以继续通过访问 https://ah-builtin-python-bundle-dot-PROJECT_ID.appspot.com/_ah/datastore_admin?app_id=PROJECT_ID
来使用该模块,其中 PROJECT_ID
是您的 Google Cloud 项目的 ID。如果您停用 Datastore Admin,则将无法重新启用该模块。
关于使用 Datastore Admin 功能时的注意事项
- 对于复制、删除、备份,可能不会考虑最近的更新。
- 所有 Datastore Admin 操作都发生在您的应用内,因此会计入您的配额。
- 我们强烈建议您在备份或恢复期间停用写入。
- 具有相同键的现有实体将在复制/恢复操作期间被覆盖。即使执行多次复制/恢复操作,也不会产生副本。复制/恢复操作不会删除额外的数据。
- 如果您使用非默认队列进行备份/恢复,则只能在
queue.yaml
中指定目标ah-builtin-python-bundle
。您不能使用其他目标。
数据库访问权限
默认情况下,Datastore Admin 可以访问同一项目中的 Datastore 数据库,并且不需要 Datastore 的 Identity and Access Management 权限。
备份数据
请按照以下步骤创建备份文件,用于数据导出或将来需要恢复数据时使用。
如果您还没有为项目创建存储分区,请先创建。或者,通过访问控制列表来检查项目的 App Engine 默认服务账号是否可以访问存储分区。默认情况下可能已经进行了此项设置,可以在需要时予以替换。
选择您希望备份的实体种类。
点击备份实体以显示备份表单。
注意,此时将提供一个备份名称,其中包含一个日期戳。
如果每天要执行多次备份,则必须更改此值,因为如果已存在同名备份,则不会执行备份。
请注意,备份作业会使用默认队列;在大多数情况下,您都可以使用此默认队列。
如果您使用非默认队列进行备份/恢复,则只能在
queue.yaml
中指定目标ah-builtin-python-bundle
。您不能使用其他目标。选择 Google Cloud Storage 作为备份存储位置。
选择 Cloud Storage 后,系统会提示您输入存储备份的存储分区名称,格式为
[BUCKET_NAME]
。您可以视需要指定带有目录结构后缀的存储分区名称,例如[BUCKET_NAME]/backups/foo
。如果这些文件夹尚不存在,则系统会予以创建。点击备份实体启动备份作业。请注意,此时会显示作业状态页面。
点击返回 Datastore 管理,以查看备份状态。
备份完成后,如果您停用了 Cloud Datastore 写入,请重新启用。
备份和恢复注意事项
备份和恢复功能旨在帮助您导出数据,或恢复意外删除的数据。您可以备份所有实体,或者仅备份指定种类的实体,并且可以根据需要从其中某个备份中恢复。
备份会保存到 Cloud Storage。
请注意,备份不包含任何索引。在恢复时,将使用您随应用一同上传的索引定义来自动重建所需索引。
您还可以使用备份文件将数据导出到其他 Google Cloud 服务,例如 BigQuery。
恢复不会为实体分配新 ID。恢复会使用备份时存在的 ID,并覆盖具有相同 ID 的任何现有实体。在恢复过程中,正在恢复的实体的 ID 将被预留。这样哪怕在恢复过程中启用了写入,也可以防止与新实体的 ID 产生冲突。自备份以来添加的新实体会被预留。
您可以从备份中恢复所有数据,也可以从备份中恢复特定的实体种类。此外,只要您使用 Cloud Storage 进行备份,您还可以使用此功能,将一个应用的数据备份恢复到其他某个应用。
取消备份
如果备份作业当前正在运行,它们将显示在 Cloud Datastore 管理界面的待处理备份列表中。
要停止这些正在运行的备份,请执行以下操作:
- 打开 Datastore 管理
- 在 Pending Backups 部分中,从列表中选择备份并点击 Abort。
取消备份作业时,App Engine 会尝试删除迄今为止已保存的备份数据。但在某些情况下,取消之后仍会保留一些文件。您可以在 Google Cloud Storage 的备份路径中找到这些文件,并在取消作业完成后将其安全地删除。这些文件的名称均以如下格式开头:datastore_backup_[BUCKET_NAME]
。
查找备份的相关信息
您可能希望查找备份的相关详细信息,例如其中包含哪些实体种类、在 Google Cloud Storage 中的保存位置及其开始和结束的时间。要显示此类备份信息,请执行以下操作:
- 打开 Datastore 管理
- 在备份或待处理备份列表中选择一个或多个备份。
- 点击信息显示这些备份的相关信息。
- 点击返回,回到 Cloud Datastore 的“管理”界面。
恢复数据
要利用备份进行恢复,请执行以下操作:
- (推荐)为您的应用停用 Cloud Datastore 写入。这样做可以避免恢复的数据与写入到 Cloud Datastore 的任何新数据之间发生冲突。
- 打开 Datastore 管理
- 在可用备份列表中,选择要恢复的备份。
- 点击 Restore。
- 在显示的咨询页面中,注意带有复选框的实体列表。默认情况下,所有实体都将被恢复。取消选中您不想恢复的各实体旁边的复选框。
- 同样在咨询页面中,请注意,恢复作业将使用默认队列及其预配置的性能设置。如果您需要不同的队列性能特征,请将其更改为采用不同配置的其他队列,并确保所选队列没有在
queue.yaml
中指定除ah-builtin-python-bundle
以外的任何目标。 - 点击恢复开始恢复。请注意,此时会显示作业状态页面。
- 点击返回 Datastore Admin,以查看恢复的状态。
- 恢复完成后,如果停用了写入,请为您的应用重新启用 Cloud Datastore 写入。
将数据恢复到其他应用
如果您使用 Google Cloud Storage 备份数据,则可以将备份恢复到原本用于创建备份的应用以外的其他应用。
将来自源应用的备份数据恢复到目标应用:
使用以下权限,在源应用的存储分区上创建身份和访问权限管理 (IAM) 政策:
- 主账号:[PROJECT_ID]@appspot.gserviceaccount.com
- 角色:
Storage Legacy Bucket Reader
和Storage Legacy Object Reader
其中
[PROJECT_ID]
是目标应用的项目 ID。在源应用中创建一个新备份。
(推荐)为您的目标应用停用 Cloud Datastore 写入,以避免恢复的数据与写入 Cloud Datastore 的新数据产生冲突。
在导入备份信息 (Import Backup Information) 按钮旁边的文本框中,以
/gs/[BUCKET_NAME]
的格式指定包含备份的源应用存储分区。
或者,为特定备份提供文件句柄:要查看备份的文件句柄,请打开源应用的管理页面,选择备份,然后点击信息。您应该会在句柄标签旁边看到文件句柄。点击导入备份信息。
除非您按句柄指定备份,否则出现的选择页面将显示您所指定存储分区的可用备份。选择所需备份并点击以下选项之一:- 如果希望将此备份保留在应用的可用备份列表中,请点击 Add to backup list。
- 如果要从此备份中进行恢复,但不希望将备份显示在应用的可用备份列表中,请点击 Restore from backup。
在显示的咨询页面中,注意带有复选框的实体列表。默认情况下,所有实体都将被恢复。取消选中您不想恢复的各实体旁边的复选框。
同样在咨询页面中,请注意,恢复作业将使用默认队列及其预配置的性能设置。如果您需要不同的队列性能特征,请将其更改为您已经采用不同方式配置的另一个队列。
点击 Restore 开始恢复。请注意,此时会显示作业状态页面。
恢复完成后,如果您停用了 Cloud Datastore 写入,请重新启用。
查看资源使用情况
高度频繁的备份往往会导致成本增加。当您运行 Cloud Datastore 管理作业时,您实际上运行的是底层 MapReduce 作业。MapReduce 作业会导致 Storage 操作和 Storage 使用情况基础上的前端实例使用小时数增加。
如需查看您的资源使用情况,请执行以下操作:
访问 Google Cloud 控制台的 App Engine 页面。
使用页面顶部的下拉菜单选择
default
服务和ah-builtin-python-bundle
版本。
启用或停用数据库写入
在恢复之前,通常建议停用写入。这有助于避免恢复操作与写入到数据库的任何新数据之间发生冲突。
停用写入可防止通过以下方式更改实体
- Datastore 查看器。
- 使用 Datastore API 的应用。
如需启用或停用写入,请执行以下操作:
转到管理页面。
点击启用写入以启用写入,或点击停用写入以停用写入。根据项目的状态,按钮文本会有所不同。
查看 Datastore Admin 资源使用情况
当您运行 Datastore Admin 作业时,您实际上运行的是底层 MapReduce 作业。MapReduce 作业不但会产生 Storage 操作和 Storage 用量,还会增加前端实例小时数。
如需查看您的资源使用情况,请执行以下操作:
访问 Google Cloud 控制台中的 App Engine 页面。
使用页面顶部的下拉菜单选择
default
服务和ah-builtin-python-bundle
版本。
停用 Datastore Admin 访问权限
运行以下命令,并将
PROJECT_ID
替换为您的 Google Cloud 项目的 ID:curl -X DELETE -H "Authorization: Bearer $(gcloud auth print-access-token)" \ https://appengine.googleapis.com/v1/apps/PROJECT_ID/services/default/versions/ah-builtin-python-bundle