执行就地恢复

与 Cloud Firestore 标准版和 Cloud Firestore 企业版相关。

本页面介绍了如何将备份中的数据恢复到与备份的源数据库同名的某个数据库中。在阅读本页内容之前,您应先熟悉备份和恢复数据部分的内容。

就地恢复

借助就地恢复,您可以在原始数据库仍存在的情况下,将数据库从备份恢复到创建该备份的源数据库。如果使用就地恢复,您可以避免重新路由流量,也无需另外创建一个具有不同名称的数据库。

恢复操作必须使用尚不存在的目标数据库。不过,您可以通过删除源数据库,然后从备份恢复到与源数据库同名的新数据库,来模拟就地恢复。

执行就地恢复

如需执行就地恢复,请按以下步骤操作:

  1. 确定要用于恢复操作的备份。
  2. 删除现有数据库。
  3. 使用所删除数据库的备份和数据库 ID 完成恢复操作。
注意:如果您的应用使用 Cloud Firestore(原生模式)客户端库,且客户端启用了离线缓存,那么在执行就地恢复时,系统可能会将您的写入同步到已恢复的数据库,而不是丢弃这些写入。如果连接到已删除数据库的客户端处于离线状态,且在您执行就地恢复期间离线缓存累积了写入,就可能会出现这种情况。

准备工作

建议您在开始就地恢复流程之前先完成以下步骤。

检索并复制数据库的索引配置。完成就地恢复操作后,使用索引配置重新创建索引。使用以下命令检索数据库的索引配置:

执行就地恢复

如需执行就地恢复操作,请完成以下步骤。在您删除数据库到恢复操作完成之间,此过程需要停机。

恢复操作一旦开始,您就无法取消该操作,而必须等到该操作完成。恢复操作会立即占用操作中使用的数据库 ID。

  1. 使用 gcloud firestore backups list 命令确定恢复操作要使用的备份并记下资源名称。资源名称采用以下格式:

        projects/PROJECT_ID/locations/LOCATION/backups/BACKUP_ID
    
  2. 使用 gcloud firestore databases delete 命令删除现有数据库:

        gcloud firestore databases delete --database='DATABASE_ID'
    

    DATABASE_ID 替换为相应的数据库 ID。

  3. 在删除数据库后,请至少等待 5 分钟,以便可以重新使用该数据库 ID。使用 gcloud firestore databases restore 命令开始恢复操作:

    gcloud firestore databases restore \
    --source-backup=projects/PROJECT_ID/locations/LOCATION/backups/BACKUP_ID \
    --destination-database='DATABASE_ID'
    

    DATABASE_ID 替换为相应的数据库 ID。

后续步骤