备份和恢复概览

Spanner 备份和恢复功能可让您按需创建 Spanner 数据库的备份,并恢复这些备份,以防止出现可能导致逻辑数据损坏的操作和应用错误。备份高度可用、经过加密,最长可保留一年(自创建之时起算)。创建备份时,备份与其源数据库位于同一实例、区域和项目中。如果您出于合规性或业务连续性方面的原因而需要在其他区域或项目中恢复备份,可以将备份复制到单独区域或项目中的实例。如需将备份保留一年以上,我们建议您导出数据库。为了防止逻辑数据损坏,Spanner 还提供了时间点恢复。您还可以启用数据库删除保护,以防止数据库被意外删除。

您可以通过以下方式备份和恢复:

主要特性

  • 数据一致性:备份是位于备份 version_time 处的 Spanner 数据库的事务性和外部一致性副本。

  • 复制:备份与其源数据库位于同一实例中,并复制到同一地理位置。对于区域实例,备份分别存储在三个读写可用区中。对于多区域实例,备份存储在包含读写副本或只读副本的所有可用区中。如果需要将数据库的备份存储在其他区域或项目中,您可以将完成的备份从源实例复制到位于其他区域或项目中的目标实例。如需了解详情,请参阅复制备份

  • 自动到期:所有备份都有用户指定的失效日期,该日期将决定何时自动删除备份。Spanner 会异步删除过期的备份,因此,备份过期与实际删除备份之间可能存在延迟。

下表介绍了几种数据恢复计划、实施该计划的建议方法以及建议方法的最长保留时间。

数据恢复计划建议的方法建议方法的最长保留时间
将数据库的备份存储在与其源数据库相同的实例、区域和项目中 创建备份。 1 年
将数据库的备份存储在与其源数据库不同的实例、区域或项目中(即跨区域或跨项目备份) 创建备份,然后将其复制到其他区域或项目中的实例。 1 年
在 Cloud Storage 中存储备份 将数据库导出到 Cloud Storage 存储桶。如需查看备份和导出之间的详细比较,请参阅选择备份和恢复或导入和导出 无限制(保留直至删除)
时间点恢复 (PITR) 如需从过去的时间点恢复数据,请选择 PITR。您可以将数据库 version_retention_period 从默认的 1 小时更改为最多 7 天。 7 天

使用 Identity and Access Management (IAM) 进行访问权限控制

借助 IAM,您可以控制对 Spanner 资源(包括备份和恢复的数据库)的访问权限。如果您刚开始接触 IAM、角色和权限,请参阅 IAM 概览了解相关介绍。

备份资源在 Spanner 资源层次结构中的实例下进行组织。我们建议在项目级别或实例级别应用 IAM 政策。如果您需要更精细的控制,也可以在备份和数据库级别应用 IAM 政策,但由于复杂性较高,不建议这样做。请记住,备份不包含数据库元数据,例如 IAM 政策,因此当您恢复数据库时,数据库最初会从其父实例继承政策。

本部分介绍了有权访问备份和恢复的预定义角色。

以下角色专门用于备份和恢复:

  • spanner.backupAdmin:有权创建、查看、更新、复制和删除备份。此角色还可以查看和管理备份的 IAM 政策。此角色无法从备份恢复数据库。
  • spanner.restoreAdmin:有权从备份恢复数据库。如果需要将备份恢复到其他实例,请在项目级别应用此角色或同时应用于这两个实例。此角色无法创建备份。
  • spanner.backupWriter:有权创建和复制备份,但无法更新或删除备份。此角色旨在供自动执行备份创建的脚本使用。

以下角色也具有备份和恢复权限:

  • spanner.admin:拥有对备份和恢复的完全访问权限。此角色拥有对所有 Spanner 资源的完整访问权限。
  • owner:拥有对备份和恢复的完整访问权限。
  • editor:拥有对备份和恢复的完整访问权限。
  • viewer:有权查看备份、备份操作和恢复操作。此角色无法创建、更新、删除、复制或恢复备份。

如需了解详情,请参阅 Spanner IAM

价格

您需要根据备份每单位时间使用的存储空间量付费。备份操作完成后,系统会开始计费,直到备份被删除为止。完成的备份至少需要支付 24 小时的费用。如果您创建了备份,然后在备份完成后一分钟将其删除,那么您仍然需要支付 24 小时的费用。

备份副本与原始备份会产生相同的存储费用。如果您在占据不同区域的两个实例之间创建了副本,则需要支付出站数据传输费用

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

备份会单独存储和计费。备份存储不会影响数据库存储结算数据库存储限制。如需了解详情,另请参阅存储空间利用率指标

如需详细了解备份费用,请参阅 Spanner 价格

后续步骤