本页面介绍了如何将备份中的数据恢复到与备份的源数据库同名的某个数据库中。在阅读本页内容之前,您应先熟悉备份和恢复数据部分的内容。
就地恢复
借助就地恢复,您可以在原始数据库仍存在的情况下,将数据库从备份恢复到创建该备份的源数据库。如果使用就地恢复,您可以避免重新路由流量,也无需另外创建一个具有不同名称的数据库。
恢复操作必须使用尚不存在的目标数据库。不过,您可以通过删除源数据库,然后从备份恢复到与源数据库同名的新数据库,来模拟就地恢复。
执行就地恢复
如需执行就地恢复,请按以下步骤操作:
- 确定要用于恢复操作的备份。
- 删除现有数据库。
- 使用所删除数据库的备份和数据库 ID 完成恢复操作。
准备工作
建议您在开始就地恢复流程之前先完成以下步骤:
导出您要删除的数据库中的数据。
如果之后您需要恢复所删除的数据库,重新导入您在上面的导出操作中导出的数据即可。如需将所删除的数据库恢复到同一数据库 ID,您必须等到所有正在运行的恢复操作均完成,然后执行以下操作:
- 删除具有该数据库 ID 的现有数据库,然后等待至少 5 分钟
- 使用该数据库 ID 创建一个新数据库
- 开始导入操作
检索并复制数据库的索引配置。导出操作不会捕获索引定义。完成就地恢复操作后,使用索引配置重新创建索引。使用以下命令检索数据库的索引配置:
使用
gcloud firestore indexes composite list
检索复合索引列表:gcloud firestore indexes composite list --database=DATABASE_ID
将 DATABASE_ID 替换为您的数据库 ID。
使用
gcloud firestore indexes fields list
检索单字段(内置)索引例外项列表。gcloud firestore indexes fields list --database=DATABASE_ID
执行就地恢复
如需执行就地恢复操作,请完成以下步骤。在您删除数据库到恢复操作完成之间,此过程需要停机。
恢复操作一旦开始,您就无法取消该操作,而必须等到该操作完成。恢复操作会立即占用操作中使用的数据库 ID。
使用
gcloud alpha firestore backups list
命令确定恢复操作要使用的备份并记下资源名称。资源名称采用以下格式:projects/PROJECT_ID/locations/LOCATION/backups/BACKUP_ID
使用
gcloud firestore databases delete
命令删除现有数据库:gcloud firestore databases delete --database='DATABASE_ID'
将 DATABASE_ID 替换为相应的数据库 ID。
在删除数据库后,请至少等待 5 分钟,以便可以重新使用该数据库 ID。使用
gcloud alpha firestore databases restore
命令开始恢复操作:gcloud alpha firestore databases restore \ --source-backup=projects/PROJECT_ID/locations/LOCATION/backups/BACKUP_ID \ --destination-database='DATABASE_ID'
将 DATABASE_ID 替换为相应的数据库 ID。