使用备份进行恢复

您可以将 Spanner 数据库的备份恢复到新数据库。恢复后的数据库将具有原始数据库中的所有数据和架构(位于备份的 version_time),包括使用 ALTER DATABASE SET OPTIONS 命令设置的所有数据库选项。它没有任何 IAM 权限(从包含所恢复数据库的实例继承而来的权限除外),并且您必须在恢复完成后应用适当的 IAM 权限。但不会包含任何变更数据流的内部数据。当您使用备份进行恢复时,已恢复的备份与其源备份位于同一实例、区域和项目中。如果您出于合规性或业务连续性方面的原因而需要使用其他区域或项目中的备份进行恢复,可以将备份复制到单独区域或项目中的实例,然后使用复制的备份进行恢复。

您可以通过以下方式使用备份进行恢复:

如需简要了解备份和恢复,请参阅备份和恢复简介

使用备份进行恢复的运作方式

恢复 Spanner 数据库时,您必须指定源备份和新的目标数据库。您无法恢复到现有数据库。 新恢复的数据库必须与备份位于同一项目中,并且位于与备份具有相同实例配置的实例中。例如,如果备份位于配置为 us-west3 的实例中,则可以将其恢复到项目中也配置为 us-west3 的任何实例。实例的计算容量不必相同。

恢复过程专为高可用性而设计。如果实例中大部分区域和可用区均可用,则可以恢复数据库。

如需恢复启用了 CMEK 的备份,密钥和密钥版本必须都可供 Spanner 使用。默认情况下,恢复的数据库使用与备份相同的加密配置。您可以通过在恢复数据库时指定不同的加密配置来替换此行为。如需了解详情,请参阅从启用 CMEK 的备份进行恢复

将备份恢复到其他区域或项目

如果您需要将备份恢复到其他区域或项目,请先复制备份到所选区域或项目。复制的备份内容只要复制完成就可以恢复。您可以在目标实例或与目标实例具有相同实例配置的任何实例中恢复备份。在恢复之前,请确保目标实例有足够的节点或处理单元(根据每节点 4TB 的存储空间上限)预配的节点或处理单元来支持数据库大小(例如,您需要至少 2 个节点才能恢复 8TB 的备份)。 如果您已将备份复制到其他项目,并且要在该项目中恢复备份,请确保您的目标项目具有恢复所需的足够节点配额。恢复复制的备份的方式与正常恢复相同。

恢复状态

恢复的数据库会经由三种状态转换,这些状态通过两项长时间运行的操作进行跟踪。

  • CREATING:Spanner 会通过创建新数据库并从备份中装载文件来开始恢复。在此初始 CREATING 状态期间,恢复的数据库还不能供使用。此状态通常会在 1 小时内完成。CREATING 状态完成后,您的数据库便可供使用。

    如需跟踪此状态的进度,您可以查询 Spanner 在此过程中提供的长时间运行的恢复操作。它会返回一个 RestoreDatabaseMetadata 对象。

    请注意以下关于 CREATING 状态的注意事项:

    • 如果您要恢复到不同实例,则恢复操作属于包含已恢复数据库的实例,而不是包含备份的实例。
    • Spanner 不允许您删除正在恢复的备份。您可以在恢复完成且数据库进入 READY 状态后将其删除。
    • 由于使用备份进行恢复,一个实例最多可以有 10 个处于 CREATING 状态的数据库。在恢复的 10 个数据库中的某个数据库转换为 READY_OPTIMIZINGREADY 状态之前,您将无法向该实例恢复其他备份。
  • READY_OPTIMIZING:Spanner 装载备份后,会开始将备份的数据复制到新数据库,同时优化其存储大小。在此过程中,您的数据库已准备就绪,可供使用。对于小于 100 TB 的数据库,此恢复阶段通常需要几个小时才能完成。

    虽然您可以在 READY_OPTIMIZING 期间照常使用数据库,但需要注意以下事项:

    • 读取延迟时间可能会略高。
    • 存储指标显示新数据库(而非备份)的大小。因此,如果数据传输仍在进行,Spanner 存储指标显示的结果可能并未反映所有数据的总大小。
    • CREATING 状态一样,Spanner 不允许您删除已装载的备份。

    Spanner 会在此状态期间提供另一个长时间运行的恢复操作,这次返回一个 OptimizeRestoredDatabaseMetadata 元数据对象。

  • READY:完成复制和优化操作后,数据库将转换为 READY 状态。数据库已完全恢复,不再引用或需要备份。

访问控制 (IAM)

spanner.restoreAdmin 角色授予您使用备份进行恢复的权限。 如需了解详情,请参阅使用 IAM 进行访问权限控制

价格

从备份进行恢复是免费的。

后续步骤